编码NSMutableArrays会给NSCoding带来错误

时间:2014-01-07 15:05:48

标签: ios objective-c nsmutablearray nscoding

当我尝试使用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];
}

1 个答案:

答案 0 :(得分:5)

首先,无需将NSMutableArray转换为NSArray

[encoder encodeObject:_myMutableArray forKey:kMutableArrayKey];

真正的问题不在于您显示的代码中,很可能数组中的某个值不支持NSCoding。请注意,您要编码的所有内容都必须实现NSCoding协议。