将字典保存到NSUserDefaults Swift中

时间:2016-07-10 17:09:59

标签: ios dictionary nsuserdefaults

我有一个字典,我想将它保存到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")

我收到了这个错误:

  

无法转换类型的值' [Int:SensorsView.Event]'预期   参数类型' AnyObject?'

为避免此错误,我这样做了:

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

但我无法检索我保存的内容

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

3 个答案:

答案 0 :(得分:2)

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

user_id   |   username
--------- | -----------
   1      |    John
   4      |    Peter

答案 1 :(得分:0)

我认为从下面的链接你可以将字典存储到NSUserDefaults

Swift NSUserDefaults not saving Dictionary?

Saving dictionary into NSUserDefaults可能有所帮助

答案 2 :(得分:0)

我设法使用Realm保存我的自定义词典! 我使用不同的类代替结构:

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)
    }
}

使用带参数的函数,以便您可以动态填充“词典”。

使用allSensors,以便您可以检索所需的所有内容。