我试图将对象保存到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
的{{1}}。 NSData
是[{1}}
但是当我切换注释部分以使代码的上半部分没有注释而下半部分是,DayReport
和程序崩溃。的为什么吗
Report
具有let var = (nil)
协议。
我补充说:
DayReport
它打印出nil,所以它没有得到正确保存,但数据不是零。
答案 0 :(得分:3)
您不应该使用.valueForKey("testKey")
,因为这是使用KVC尝试获取一个不存在的密钥。
相反,您应该使用.objectForKey("testKey")
。
答案 1 :(得分:0)
以下是NSuserDefaults ...
的设定值代码 [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"your key"];//Remember your key to get data from NSuserDefaults
[[NSUserDefaults standardUserDefaults] synchronize];
从NSuserDefaults获取价值的代码...
int CheckTimer = [[NSUserDefaults standardUserDefaults] integerForKey:@"your key"];
我希望这对你有所帮助....