报错现象
+[ApiBase encodeWithCoder:]: unrecognized selector sent to class 0x101fd76d8
崩溃分析
基类Model
已经遵守了<NSCoding,NSCopying>
协议
但是一运行,就崩溃,在别的项目中同样的代码不会崩溃。
并且,我这里就不是对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删除就能运行了。也是够奇葩了
真正的原因:暂时未知。