我正在实现我自己的密钥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'
在MyUnarchiver
中来自此方法的12345,我推测:
-(NSInteger)versionForClassName:(NSString *)className
{
return 12345;
}
同样,如果我们在nil
的{{1}}处抛出NSCoder
NSString
,那么我们会得到与上面相同的错误,但版本号为0。
我怀疑这可能与我不知道我应该在initWithCoder:
方法中实现什么这一事实有关。即使从Archives and Serializations: Subclassing NSCoder参考文献中我也无法对此有所了解。