OGeek|极客世界-中国程序员成长平台

标题: ios - 将字典保存到 NSUserDefaults Swift [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 21:14
标题: ios - 将字典保存到 NSUserDefaults Swift

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

var saved = NSUserDefaults.standardUserDefaults()
let dict = ["Name": "aul", "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在一些评论后没有帮助我我相信这里的目标是将我的字典转换为数据(或其他东西),在我检索到它之后我将它转换回字典



Best Answer-推荐答案


尝试将数据转换为 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]

关于ios - 将字典保存到 NSUserDefaults Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294445/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4