2012-06-02 60 views
4

我有一個對象包含各種NSString對象和變量,我們NSCoding歸檔到磁盤上的一個文件,然後取消歸檔。到目前爲止,一切都一直在完美運作編碼一個NSMutableArray

今天,我想一個NSMutableArray添加到對象,並試圖利用編碼:

[encoder encodeObject:myArray ForKey:@"myArray"]; 

,然後再使用其解碼:

[self setMyArray:[decoder decodeObjectForKey:@"myArray"]]; 

它似乎沒有奏效,雖然我在編碼或解碼本身中沒有遇到任何錯誤,但是如果我在從文件解碼後嘗試修改數組的值,則會發生錯誤。

我敢肯定,我在這裏做了一件完全錯誤的事情,但不完全確定是什麼。我在想,也許這與它在解壓時沒有正確分配有關。

任何東西看起來都明顯是問題的根源?

+0

可能重複http://stackoverflow.com/questions/10391803/nskeyedarchiver-and -nskeyedunarchiver-with-nsmutablearray) – Caleb

+1

我同意。這基本上是同一個問題。我創建時沒有意識到它。說實話,我忘了我曾經有過類似的問題!在這兩者中,我認爲這個更簡潔,並且有一個簡單的直接答案,而幾個星期前的變化更加詳細,並且包括可能引發這個問題的其他相關問題。感謝所有幫助過我們的人! :) –

+0

哈!我甚至沒有注意到你問過重複的問題。 ;-) – Caleb

回答

10

它不會似乎工作,雖然我沒有得到任何錯誤,在 編碼或解碼本身,我做,如果我嘗試了數組的值解碼後,修改 得到一個錯誤從文件中。

對檔案進行解碼可爲您提供不可變的對象,無論它們在編碼時是否可變或不可變。你沒有做任何特別錯誤的事 - 它像廣告一樣工作。

爲一個類似的問題的另一個例子參見this answer,和溶液:

[self setMyArray:[[decoder decodeObjectForKey:@"myArray"] mutableCopy]; 
[的NSKeyedArchiver和NSKeyedUnarchiver用的NSMutableArray](的
+1

我會說你郵寄它。顯然我有一個完整的Noob日。我應該已經看到了......尤其是因爲「類似的問題」是幾個星期前我們從另一個Noob日獲得的。如果我可以的話,我會給你雙倍的提高...只是爲了耐心,並指出我回到我已經給出的答案。 ::: slaps額頭::: –

+0

嗯....做了更改(我的NSKeyedUnarchiver被設置爲RETAIN ...我將其更改爲mutableCopy,並且我也將mutableCopy添加到了我的數組解碼器方法中),並且它仍然崩潰當我嘗試addObject:到數組...但只有在取消存檔後。有任何想法嗎? –

+0

檢查您嘗試添加對象的數組是否是有效的可變數組。檢查您添加的對象是否有效。如果這些都可以,那麼添加對象應該沒有問題。 – Caleb

相關問題