我尝试将我的对象转换为NSData的实例,将它们放在NSArray中并将数组存储在用户默认值中。我还尝试将对象放在NSArray中,将数组转换为NSData实例并将其存储在用户默认值中。两种方式我都收到以下错误:
“因未捕获的异常'NSInvalidArgumentException', reason: '-[GelirObject encodeWithCoder:]: unrecognized selector sent to instance 0x89dbf90"
The name of my custom object is GelirObject.
终止应用
我知道自定义对象无法直接存储到用户默认值。这就是我使用NSData的原因,但我仍然得到这个错误。如何存储我的对象而不会出错?
答案 0 :(得分:0)
首先,你正在做的事情是错的。您不应在NSUserDefaults
内放置大量信息。至于问题:
NSData *incomeObjectData = [NSKeyedArchiver archivedDataWithRootObject:incomeObject];
您的GelirObject
不符合NSCoding
协议。这就是你的应用程序尖叫的原因。只需实施所需的方法initWithCoder:
和encodeWithCoder:
。