我创建了一个自定义类并为该类创建了对象。我想将该对象存储到 NSUserDefault 中。将对象设置为用户错误时出现错误。我该如何设置?
3 回答
你必须在你的类中实现 NSCoding 协议并实现协议方法。这只是序列化。在存储对象时,您应该序列化(NSKeyedArchiver)类并与检索相同,您应该取消序列化(NSKeyedUnArchiver)该对象。
方法是
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
默认对象必须是一个属性列表,即以下实例(或集合实例的组合):NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。如果要存储任何其他类型的对象,通常应该将其归档以创建 NSData 的实例。
创建 的实例的最简单方法NSData
是使用NSKeyedArchiver
.
最可能的原因是您的结构中有一些难以归档的内容。
这是来自 NSUserDefaults 类参考的引用,您可能会发现它很有用:
NSUserDefaults 类提供方便的方法来访问常见类型,例如浮点数、双精度数、整数、布尔值和 URL。默认对象必须是一个属性列表,即以下实例(或集合实例的组合):NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。如果要存储任何其他类型的对象,通常应该将其归档以创建 NSData 的实例。有关更多详细信息,请参阅首选项和设置编程指南。
编辑。被斯蒂芬打败了,给这个人一个奖品:)