我试图将对象保存到NSUserdefaults
,然后提取相同的对象。
// let raw: AnyObject! = defaults.valueForKey("testKey")
// let data = raw as NSData
//
// self.Report = NSKeyedUnarchiver.unarchiveObjectWithData(data) as DayReport
//
// println(Report.Day)
Report.Day = "Mon"
let data = NSKeyedArchiver.archivedDataWithRootObject(self.Report)
println(data)
defaults.setObject(data, forKey: "testKey")
defaults.synchronize()
在这段代码中,我将对象Report保存为
NSUserDefaults
编码的NSData
。 DayReport
是Report
的类型但是,当我切换注释部分时,代码的上部不被注释,而下部是注释,因此
let var = (nil)
和程序崩溃。 为什么? DayReport
具有NSCoding
协议。更新资料
我添加了这个:
defaults.setObject(data, forKey: "testKey")
defaults.synchronize()
println(defaults.objectForKey("testKey"))
并且它打印出nil,因此无法正确保存它,但是数据不是nil。
最佳答案
您不应该使用.valueForKey("testKey")
,因为这是使用KVC尝试获取不存在的密钥的。
相反,您应该使用.objectForKey("testKey")
。
关于ios - NSUserDefaults返回nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25077621/