2016-08-30 78 views
0

我有NSUserDefaults的奇怪問題。Objective-C NSUserDefaults不保存特定鍵的NSMutableArray

我想省NSMutableArray

我有這樣一段代碼:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:selected forKey:@"markListArr"]; 

問題是關鍵「markListArr」的對象沒有得到保存。 我在應用程序的第一次運行時執行此操作。 當後來在應用程序中,我想保存對象的關鍵一切工作正常。

如果我使用任何其他鍵一切工作正常。我想使用該特定鍵,因爲我已經在應用商店中有應用,並且這只是對現有應用的更新。

我已經試過[userDefaults synchronize],它不起作用。

任何想法發生了什麼?

+0

你是什麼意思它不保存?你有沒有設置一個斷點?記錄了任何信息? 「選擇」是否存在? – Tim

+0

你如何檢索數組?您應該在用戶默認情況下調用'arrayForKey:'。 – ozgur

+0

[將NSArray保存到NSUserDefaults並在NSMutableArray中獲取]可能的重複(http://stackoverflow.com/questions/9212430/saving-nsarray-to-nsuserdefaults-and-getting-it-in-nsmutablearray) – Aviram

回答

0

你是否在獲取對象之前調用[userDefaults synchronize]?我使用下面的代碼:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray *selected = [[NSMutableArray alloc] init]; 
[selected addObject:@"New Value"]; 
[userDefaults setObject:selected forKey:@"markListArr"]; 
[userDefaults synchronize]; 

NSMutableArray *arr = [userDefaults objectForKey:@"markListArr"]; 
NSLog(@"arr: %@", arr); 

和它打印:

arr: (
    "New Value" 
) 
+0

是的,我完全一樣。我在請求的完成塊中有這個代碼。問題是我在用戶默認值中保存了三種不同的東西,並且只有這個特定的鍵不起作用。其他所有鍵都可以正常工作 – Matic1911

+0

我用'NSLog(@「%@」,[[NSUserDefaults standardUserDefaults] dictionaryRepresentation])'進行了調試,問題是沒有保存密鑰和數組。 – Matic1911

+0

是否可變數組NSStrings中的所有鍵?如果它不符合NSCoding,則可能無法保存可變數組。如果你還沒有嘗試過,這篇文章可能會有幫助嗎? http://stackoverflow.com/a/471920/2845237 –

相關問題