0

我有一個對象。它只有兩個NSStrings作爲屬性。我需要使用NSKeyedArchiver嗎?

我創建了一個數組來保存這些對象中的幾個。

是否需要使用NSKeyedArchiver將此數組保存到磁盤,或者我可以只使用NSUserDefaults?

回答

0

您只能使用[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:myKey];進行書寫,並使用[[NSUserDefaults standardUserDefaults] arrayForKey:myKey];進行閱讀(因爲不需要,因此不需要setArray:forKey:)。另外,如果你有一個你不想存儲在NSUserDefaults內部的數組,那麼寫入和讀取數組就很容易:-[NSArray writeToFile:atomically:]+[NSArray arrayWithContentsOfFile:]。 NSDictionary也有相同的方法來輕鬆讀/寫字典。當然你也可以隨意使用NSKeyed(Un)Archiver。

+0

如果我嘗試這樣做,我會得到一個「嘗試插入非屬性值」錯誤。 – 2010-09-19 11:26:43

+0

@awakeFromNib:你做了什麼?我只是驗證了這個代碼:'NSArray * array = [NSArray arrayWithObjects:@「One」,@「Two」,nil]; \t [[NSUserDefaults standardUserDefaults] setObject:array forKey:@「TestKey」];'它完全按照預期工作。 – DarkDust 2010-09-19 15:29:21

1

如果您的對象是自定義類,則在將內容放入NSUserDefaults之前,您需要使用NSKeyedArchiver。見here