1

我创建了一个自定义类并为该类创建了对象。我想将该对象存储到 NSUserDefault 中。将对象设置为用户错误时出现错误。我该如何设置?

4

3 回答 3

3

你必须在你的类中实现 NSCoding 协议并实现协议方法。这只是序列化。在存储对象时,您应该序列化(NSKeyedArchiver)类并与检索相同,您应该取消序列化(NSKeyedUnArchiver)该对象。

方法是

  • (void)encodeWithCoder:(NSCoder *)aCoder;
  • (id)initWithCoder:(NSCoder *)aDecoder;
于 2012-08-02T11:07:50.287 回答
0

正如文档所述

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

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

于 2012-08-02T11:08:46.850 回答
0

最可能的原因是您的结构中有一些难以归档的内容。

这是来自 NSUserDefaults 类参考的引用,您可能会发现它很有用:

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

编辑。被斯蒂芬打败了,给这个人一个奖品:)

于 2012-08-02T11:10:50.727 回答