2017-06-07 33 views
0

如何修复异常:异常而NSDictionary中设置为UserDefaults

[User Defaults] Attempt to set a non-property-list object { 
4 = 5; 
} as an NSUserDefaults/CFPreferences value for key MyKey 

通过执行下面的代码抛出(SWIFT 3)

let ns = NSDictionary(dictionary: [4: 5]) 
UserDefaults.standard.set(ns, forKey: "MyKey") 

以上代码正确保存String类型,但具有NSDictionary

问题
+1

检查此问题:https://stackoverflow.com/questions/37825630/save-dictionary-in-user-defaults-in-swift-3-with-xcode-8 –

回答

1

所有属性列表键必须是String

documentation

虽然NSDictionaryCFDictionary对象允许其键是任何类型,的对象如果键不是字符串对象,集合不是属性列表对象

let ns = ["4": 5] 
UserDefaults.standard.set(ns, forKey: "MyKey") 

无需使用NSDictionary,斯威夫特Dictionary的工作方式相同,并含蓄地桥接。

0

您的字典必须有字符串作为键才能保存到UserDefaults

这个工作对我来说:

let ns = NSDictionary(dictionary: ["4": 5]) 
UserDefaults.standard.set(ns, forKey: "MyKey")