NSUserDefaults返回零

时间:2014-08-01 09:59:52

标签: ios swift nsuserdefaults

我试图将对象保存到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,所以它没有得到正确保存,但数据不是零。

2 个答案:

答案 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"];

我希望这对你有所帮助....