首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么NSUserDefaults无法在iOS中保存NSMutableDictionary?

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

Stack Overflow用户
提问于 2019-04-12 00:14:57
回答 2查看 0关注 0票数 0

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

我收到此错误:

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

EN

回答 2

Stack Overflow用户

发布于 2019-04-12 08:36:46

如果要在用户默认值中保存对象,则所有对象(递归地,一直向下)必须是属性列表对象。符合NSCoding并不意味着什么 - NSUserDefaults不会自动编码NSData,你必须自己做。如果您的“实现的对象列表NSCoding”表示不是属性列表对象的对象,那么在保存到用户默认值之前,您必须对它们执行某些操作。

FYI财产清单类NSDictionaryNSArrayNSStringNSDateNSData,和NSNumber。您可以将可变子类(如NSMutableDictionary)写入用户首选项,但您读出的对象将始终是不可变的。

票数 0
EN

Stack Overflow用户

发布于 2019-04-12 09:45:46

最简单的答案:

NSDictionary如果键是NSStrings,则只是一个plist对象。因此,存储的“钥匙”为用。NSStringstringWithFormat

方案:

代码语言:javascript
复制
NSString *key = [NSString stringWithFormat:@"%@",[dictionary valueForKey:@"Key"]];

好处:

  1. 它将添加String-Value
  2. 当您的变量值为时,它将添加空值NULL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档