如何将NSDictionary存储/检索到NSUserDefaults?

时间:2012-02-28 14:31:55

标签: objective-c ios5 nsdictionary nsuserdefaults

在我的应用程序中,将{/ 1}}中的字符串值(如myTextField.text)保存/检索没有任何问题,但无论我如何存储NSUserDefaults我都没有成功。我从这个网站+谷歌尝试了很多答案。有人可以帮忙吗?这也是我的代码:

NSDictionary

* 编辑 *注意:字典包含一种对象数组,对象都是属性列表的成员(NSString,NSDate,...)

3 个答案:

答案 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)的便捷方法。默认对象必须是属性列表,即(或集合的实例组合)的实例:NSDataNSStringNSNumberNSDateNSArrayNSDictionary。如果要存储任何其他类型的对象,通常应将其存档以创建NSData的实例。有关详细信息,请参阅Preferences and Settings Programming Guide

我假设您正在尝试存储除列出类型之外的其他类型。