将字典保存到 NSUserDefaults Swift

Save Dictionary into 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]

我认为来自下面的 link 你将能够将字典存储到 NSUserDefaults

Swift NSUserDefaults not saving Dictionary?

Saving dictionary into NSUserDefaults 可能有帮助

我成功地使用 Realm 保存了我的自定义词典! 我使用不同的 class 而不是结构,如下所示:

import RealmSwift


class Sensors : Object {


    dynamic var sensorName = ""
    dynamic var sensorType = ""
    dynamic var sensorSub = ""

}

然后我这样填:

    var useOfRealm = try! Realm() 
    var allSensors = useOfRealm.objects(Sensors.self)
    var saving = Sensors()
    func fillThis() {
    try! useOfRealm.write {

                saving.sensorName = "something"
                saving.sensorType = "something"
                saving.sensorSub = "something"

                useOfRealm.add(saving)
    }
}

使用带参数的函数,这样您就可以动态填充 'Dictionary'。

使用 allSensors 这样您就可以检索到您想要的所有内容。