【发布时间】:2014-08-01 21:43:07
【问题描述】:
我试图将一个对象保存到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()
在这段代码中,我将对象报告保存为NSUserDefaults,编码为NSData。 DayReport 是 Report 的类型
但是当我切换注释部分时,代码的上部没有注释而下部是,let var = (nil) 和程序崩溃。 为什么?
DayReport 具有NSCoding 协议。
更新
我添加了这个:
defaults.setObject(data, forKey: "testKey")
defaults.synchronize()
println(defaults.objectForKey("testKey"))
它打印出 nil,所以它没有被正确保存但数据不是 nil。
【问题讨论】:
-
你能告诉我们你设置“defaults”变量的代码行吗?
-
让默认值 = NSUserDefaults.standardUserDefaults()
-
只是一个想法,将每个
"testKey"替换为"testKey" as NSString并检查一下。有用吗?
标签: ios swift nsuserdefaults