ios – 将字典保存到NSUserDefaults Swift中

我有一个字典,我想将它保存到NSUserDefaults(或其他东西,所以我可以在我终止应用程序后访问我的变量),我找到了一个例子:

var saved = NSUserDefaults.standardUserDefaults()
let dict = ["Name": "Paul", "Country": "UK"]
saved.setObject(dict, forKey: "SavedDict")

但是,当我用它来挖掘词典时,它没有用. (也许是因为我的字典有点不同)

我的词典是这样的:

 var userDictionary = [Int : Event]()

 struct Event {
        var sensorName: String
        var sensorType: String
        var sensorSub: String

    }

我添加这样的元素:

userDictionary[value] = Event(sensorName: "first", sensorType: "Temp", sensorSub: "Third")

这是我试图这样做,我可以存储它.

saved.setObject(userDictionary, forKey: "valueDictionary")

我收到这个错误:

Cannot convert value of type ‘[Int : SensorsView.Event]’ to expected
argument type ‘AnyObject?’

为了避免这个错误我做了这个:

self.saved.setObject(self.userDictionary as? AnyObject, forKey: "valueDictionary")

但我无法找回我保存的东西

不幸的是这个question在一些评论之后没有帮助我我认为这里的目标是将我的字典转换为数据(或其他东西)并在我检索它之后将其转换回字典

最佳答案 尝试将数据转换为NSData,然后像这样检索:

/// Save
NSUserDefaults.standardUserDefaults().setObject(NSKeyedArchiver.archivedDataWithRootObject(object), forKey: key)

/// Read
var data = NSUserDefaults.standardUserDefaults().objectForKey(key) as NSData
var object = NSKeyedUnarchiver.unarchiveObjectWithData(data) as [String: String]
点赞