如何将自定义对象存储到目标c中的用户默认值?

时间:2013-12-17 21:53:12

标签: ios objective-c nsuserdefaults nsdata custom-object

我尝试将我的对象转换为NSData的实例,将它们放在NSArray中并将数组存储在用户默认值中。我还尝试将对象放在NSArray中,将数组转换为NSData实例并将其存储在用户默认值中。两种方式我都收到以下错误:

“因未捕获的异常'NSInvalidArgumentException', reason: '-[GelirObject encodeWithCoder:]: unrecognized selector sent to instance 0x89dbf90" The name of my custom object is GelirObject.终止应用

我知道自定义对象无法直接存储到用户默认值。这就是我使用NSData的原因,但我仍然得到这个错误。如何存储我的对象而不会出错?

1 个答案:

答案 0 :(得分:0)

首先,你正在做的事情是错的。您不应在NSUserDefaults内放置大量信息。至于问题:

NSData *incomeObjectData = [NSKeyedArchiver archivedDataWithRootObject:incomeObject];

您的GelirObject不符合NSCoding协议。这就是你的应用程序尖叫的原因。只需实施所需的方法initWithCoder:encodeWithCoder: