当我尝试使用NSMutableArray对自定义对象进行编码时,我总是会遇到以下异常:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'cannot encode (void *) value: <2063e916>'
是什么导致这个? mutablearray被初始化,并且在它断开的那一点上有数据。我很确定我在编码和编码器中做错了什么。方法,因为如果我把它保持为空,它运行良好。
这就是我尝试将我的mutablearray转换为数组的方式,但这并没有帮助:
- (void) encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:[[NSArray alloc] initWithArray:_myMutableArray] forKey:kMutableArrayKey];
}
答案 0 :(得分:5)
首先,无需将NSMutableArray
转换为NSArray
。
[encoder encodeObject:_myMutableArray forKey:kMutableArrayKey];
真正的问题不在于您显示的代码中,很可能数组中的某个值不支持NSCoding
。请注意,您要编码的所有内容都必须实现NSCoding
协议。