[英]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")
我得到这个错误:
无法将“[Int : SensorsView.Event]”类型的值转换为预期的参数类型“AnyObject?”
为了避免这个错误,我这样做了:
self.saved.setObject(self.userDictionary as? AnyObject, forKey: "valueDictionary")
但我无法检索我保存的内容
不幸的是,经过一些评论后,这个问题对我没有帮助
尝试将数据转换为 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]
我认为来自下面的链接,您将能够将字典存储到 NSUserDefaults 中
Swift NSUserDefaults 不保存字典? 或者
将字典保存到 NSUserDefaults 中可能会有所帮助
我设法使用 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
以便您可以检索所需的一切。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.