iOS NSKeyedArchiver 归档崩溃 奇葩原因

报错现象

+[ApiBase encodeWithCoder:]: unrecognized selector sent to class 0x101fd76d8

崩溃分析

基类Model已经遵守了协议
但是一运行,就崩溃,在别的项目中同样的代码不会崩溃。
并且,我这里就不是对model进行归档,而是已经转成了字典了,对字典json进行归档,按理说就能直接归档,但是崩溃。

原始代码

NSMutableArray *mArr = [NSMutableArray array];
for (SSXMessageModel *model in oldMessages) {
    NSMutableDictionary *dic = [model mj_keyValues];
    [mArr addObject:dic];
}
[NSKeyedArchiver archiveRootObject:mArr toFile:PathMore];

修改后的代码

for (SSXMessageModel *model in oldMessages) {
    NSMutableDictionary *dic = [model mj_keyValues];
    [dic removeObjectForKey:@"debugDescription"];
    [dic removeObjectForKey:@"description"];
    [dic removeObjectForKey:@"superclass"];

    [mArr addObject:dic];
}
[NSKeyedArchiver archiveRootObject:mArr toFile:PathMore];

原因分析

这个字典里面有三个key,把这三个key删除就能运行了。也是够奇葩了
真正的原因:暂时未知。

你可能感兴趣的:(iOS NSKeyedArchiver 归档崩溃 奇葩原因)