簡體   English   中英

不從unarchiveObjectWithData調用initWithCoder:函數:

[英]The initWithCoder: function is not called from unarchiveObjectWithData:

我正在嘗試取消歸檔特定類型的對象的數組,但是initWithCoder:函數未在該對象的類內執行。 相反,我得到了錯誤:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SavedObject initWithCoder:]: unrecognized selector sent to instance 0x9e85f34'

現在,奇怪的是,調用了encodeWithCoder:,並且我可以將數據寫到磁盤上了。 然后,當嘗試讀回數據時,數據看起來就像寫入磁盤的數據一樣。

寫入磁盤:

// arrayOfObjectsToSave
NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:arrayOfObjectsToSave];
// uses NSData writeToURL - Works fine!
[self writeToDisk:arrayData];

通過控制台中的po命令,我可以確認arrayData看起來類似於以下內容:

<62706c69 73743030 ... 00000000 00000288>

讀回數據:

// url passed through
NSData *readBack = [self readDataFromURL:dataURL];
NSArray *persisitedArray = [NSKeyedUnarchiver unarchiveObjectWithData:readBack]

readBack數據為:

<62706c69 73743030 ... 00000000 00000288>

但應用程式似乎在unarchiveObjectWithData:發生崩潰,並出現上述錯誤,但似乎沒有在類上調用initWithCoder:。

最重要的是...在iOS 7上運行良好

我設法通過重命名類實體解決了該問題。 現有的所有代碼現在都可以按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM