2

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

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

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

4

1 回答 1

0

首先,你在做什么是错误的。你不应该在你的NSUserDefaults. 至于问题:

NSData *incomeObjectData = [NSKeyedArchiver archivedDataWithRootObject:incomeObject];

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

于 2013-12-17T22:31:23.143 回答