使用user.default保存一堆数据。除了一个字典[Int:String],所有内容都可以保存。有趣的部分是,我可以很好地保存字典[String:Int],但是当它的[Int:String]运行运行包含代码的保存函数时,它就会崩溃。
控制台显示以下内容:
***由于未捕获的异常'NSInvalidArgumentException'终止了应用程序,原因:'试图插入非财产列表对象{ 99 =詹妮弗; }作为关键玩家名称的
谢谢
答案 0 :(得分:1)
您要保存在UserDefualt中的对象必须是NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary类型。根据苹果文档:
默认对象必须是属性列表,即(或 对于集合,是NSData,NSString, NSNumber,NSDate,NSArray或NSDictionary。如果要存储任何 其他类型的对象,通常应将其归档以创建一个 NSData的实例。 UserDefault Documentation
NSDictionary的密钥是符合NSCopying协议的字符串或类型。
您可以尝试以下方法:
let yourData = NSKeyedArchiver.archivedDataWithRootObject(yourDictionary)
let userDefualts = UserDefaults.standard
userDefualts.set(yourData, forKey: "yourKey")