如何在用户默认值中存储自定义对象 - IOS

时间:2012-08-02 11:03:03

标签: ios class ios4 nsuserdefaults

我创建了一个自定义类&为该类创建了对象。我想将该对象存储到NSUserDefault中。将对象设置为userfaults时出错。我怎么设置?

3 个答案:

答案 0 :(得分:3)

您必须在课堂上实施NSCoding协议。实现协议方法。 这只是序列化。在存储对象时,您应该序列化(NSKeyedArchiver)类和&与检索相同,您应该反序列化(NSKeyedUnArchiver)该对象。

方法是

  • (void)encodeWithCoder:(NSCoder *)aCoder;
  • (id)initWithCoder:(NSCoder *)aDecoder;

答案 1 :(得分:0)

As the documentation states

  

默认对象必须是属性列表,即(或   对于集合的实例组合):NSData,NSString,   NSNumber,NSDate,NSArray或NSDictionary。如果你想存储任何   在其他类型的对象中,通常应将其存档以创建   NSData的实例。

创建NSData实例的最简单方法是使用NSKeyedArchiver

答案 2 :(得分:0)

最可能的原因是您的结构中存在难以存档的内容。

以下是您可能会觉得有用的NSUserDefaults类参考的引用:

  

NSUserDefaults类提供了访问常用类型(如浮点数,双精度数,整数,布尔值和URL)的便捷方法。默认对象必须是属性列表,即(或集合的实例组合)的实例:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。如果要存储任何其他类型的对象,通常应将其存档以创建NSData实例。有关更多详细信息,请参阅“首选项和设置编程指南”。

编辑。 被斯蒂芬击败,给男人一个奖励:)