为什么NSUserDefaults无法在iOS中保存NSMutableDictionary?

为什么NSUserDefaults无法在iOS中保存NSMutableDictionary?

我想保存一个NSMutableDictionary对象NSUserDefaults。键类型NSMutableDictionaryNSString,值类型是NSArray,它包含实现的对象列表NSCoding。每份文件,NSStringNSArray两者都符合NSCoding

我收到此错误:

[NSUserDefaults setObject:forKey:]:尝试插入类NSCFDictionary的非属性值....


UYOU
浏览 586回答 3
3回答

30秒到达战场

如果要在用户默认值中保存对象,则所有对象(递归地,一直向下)必须是属性列表对象。符合NSCoding并不意味着什么 - NSUserDefaults不会自动编码NSData,你必须自己做。如果您的“实现的对象列表NSCoding”表示不是属性列表对象的对象,那么在保存到用户默认值之前,您必须对它们执行某些操作。FYI财产清单类NSDictionary,NSArray,NSString,NSDate,NSData,和NSNumber。您可以将可变子类(如NSMutableDictionary)写入用户首选项,但您读出的对象将始终是不可变的。
打开App,查看更多内容
随时随地看视频慕课网APP