NSString无法解码类版本XXXX

时间:2012-10-31 12:37:34

标签: nsstring runtime-error subclassing nscoder nsstringencoding

我正在实现我自己的密钥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参考文献中我也无法对此有所了解。