在我的应用程序中,将{/ 1}}中的字符串值(如myTextField.text
)保存/检索没有任何问题,但无论我如何存储NSUserDefaults
我都没有成功。我从这个网站+谷歌尝试了很多答案。有人可以帮忙吗?这也是我的代码:
NSDictionary
* 编辑 *注意:字典包含一种对象数组,对象都是属性列表的成员(NSString,NSDate,...)
答案 0 :(得分:3)
其他答案试图告诉你的是,你必须摆脱你的(身份证)。如果您尝试将id放入用户默认值,NSUserDefaults和编译器将会抱怨并抛出警告。以这种方式尝试。
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
if (result) {
[[NSUserDefaults standardUserDefaults] setObject:result forKey:@"yourUniqueKey"];
}
答案 1 :(得分:2)
这是因为NSDictionary
中的某些对象不是Objective C原始对象,或者更好的方式,iOS不知道如何转换NSDictionary
中的自定义数据到可以再次保存和加载的表单。
因此,您需要了解如何使这些自定义对象符合NSCoding
。
Here is a related question that should have some useful information为你服务。
答案 2 :(得分:1)
这取决于您存储的内容。 Apple的documentation说
NSUserDefaults
类提供了访问常用类型(如浮点数,双精度数,整数,布尔值和URL)的便捷方法。默认对象必须是属性列表,即(或集合的实例组合)的实例:NSData
,NSString
,NSNumber
,NSDate
,NSArray
或NSDictionary
。如果要存储任何其他类型的对象,通常应将其存档以创建NSData
的实例。有关详细信息,请参阅Preferences and Settings Programming Guide。
我假设您正在尝试存储除列出类型之外的其他类型。