我有一个字典,我想将它保存到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>
答案 0 :(得分:2)
尝试将数据转换为NSData,然后像这样检索:
user_id | username
--------- | -----------
1 | John
4 | Peter
答案 1 :(得分:0)
我认为从下面的链接你可以将字典存储到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
,以便您可以检索所需的所有内容。