我正在实现自己的键控NSCoder
子类,并且 NSString 的解码失败。
如果我执行以下操作:
MyUnarchiver *aDecoder = [[MyUnarchiver alloc] initWithData:someArchivedData];
NSString *aString = [[NSString alloc] initWithCoder:aDecoder];
然后抛出以下“未捕获的异常”:
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'NSString cannot decode class version 12345'
我认为12345 来自此方法的位置MyUnarchiver
:
-(NSInteger)versionForClassName:(NSString *)className
{
return 12345;
}
同样,如果我们抛出一个nil
NSCoder
at NSString
,initWithCoder:
那么我们会得到与上面相同的错误,但版本号是 0。
我怀疑这可能与我不知道我应该在该versionForClassName:
方法中实现什么这一事实有关。即使从档案和序列化:子类化 NSCoder参考资料中我也无法收集到太多信息。