ios - NSUserDefaults 返回 nil

标签 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()

在这段代码中,我将对象 Report 保存到编码为 NSDataNSUserDefaults 中。 DayReportReport

的类型

但是当我切换注释部分,使代码的上半部分没有注释而下半部分有注释时,let var = (nil) 并且程序崩溃了。 为什么?

DayReport 具有 NSCoding 协议(protocol)。

更新

我添加了这个:

    defaults.setObject(data, forKey: "testKey")
    defaults.synchronize()

    println(defaults.objectForKey("testKey"))

它打印出nil,所以它没有被正确保存,但数据不为零。

最佳答案

您不应该使用 .valueForKey("testKey"),因为这是使用 KVC 来尝试获取不存在的 key 。

相反,您应该使用 .objectForKey("testKey")

关于ios - NSUserDefaults 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077621/

相关文章:

ios - TTTAttributedLabel 行数错误

ios - 为圆形 UIImage 添加边框

ios - 应用程序仅在真实设备上启动时崩溃

ios - 如何在 NSUserDefaults 中保存任何类

iphone - NSUserDefaults NSObject 和 NSArray 对象

iphone - 不想点击两次以使用 sharekit 应用程序在 Facebook 中分享消息?

ios - Swift 3 核心数据问题 - 所有数据丢失

ios - 警报 View 没有确定/关闭按钮?

swift - 在 swift 中使用 parse 重置密码

iphone - iOS 将 UISegmentedControl 选择存储在 NSUserDefaults 中