0

我正在實現我自己的密鑰NSCoder的子類和解碼失敗的NSString。NSString不能解碼類的版本XXXX

如果我這樣做了以下內容:

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; 
} 

同樣,如果我們拋出nilNSCoderNSStringinitWithCoder:然後我們得到了同樣的錯誤如上,但版本號爲0

我懷疑這可能與事實,我不知道我應該在versionForClassName:方法來實現做。即使從Archives and Serializations: Subclassing NSCoder參考我無法收集這一點。

回答

0

Aaaand ....在寫出問題的過程中,我意識到我沒有實施allowsKeyedCoding方法,這似乎至少可以緩解問題。

但是,我仍然不確定在versionForClassName:中應該實施什麼。我剛剛從我的實現中刪除它,並且一切似乎也一樣。

希望這可以幫助別人。