【发布时间】:2016-08-15 20:38:40
【问题描述】:
我有一个 [Int:Bool] 字典,我正在尝试将其保存到我的 NSDictionary 中。但是,它崩溃并出现错误 Attempt to set a non-property-list object
let dictionary = [Int:Bool]()
self.dictionary[2] = true
self.dictionary[3] = false
NSUserDefaults.standardUserDefaults().setObject(dictionary, forKey: "dictionary")
另外,为了加载,我首先尝试了这个,但记录了错误,它严格要求 AnyObject?。
NSUserDefaults.standardUserDefaults().objectForKey("dictionary")
然后我尝试了这个并记录了:
NSUserDefaults.standardUserDefaults().objectForKey("dictionary") as? [Int:Bool]
我也试过dictionaryForKey。我得到了..
NSUserDefaults.standardUserDefaults().dictionaryForKey("dictionary")
无法将值赋给类型 [String: AnyObject] 以键入 [Int:Bool]
那么这两种方法中哪一种更好呢? (我认为这些值在我的情况下是可选的)
1.
NSUserDefaults.standardUserDefaults().objectForKey("dictionary") as? [Int:Bool] ?? [Int:Bool]()
2.
NSUserDefaults.standardUserDefaults().objectForKey("dictionary") as? [Int:Bool])!
【问题讨论】:
-
您是否在保存后同步了您的 NSUserDefaults?
NSUserDefaults.standardUserDefaults().synchronize() -
我认为你应该使用
dictionaryForKey(_:)。 -
啊。我完全忘记将其添加到问题中。我也试过了..出现错误..更新了我的问题
-
如果在当前范围内声明,为什么要访问
dictionary和self.? -
另外,您显然不能将值添加到您使用
let声明的字典中...
标签: ios swift dictionary nsuserdefaults