簡體   English   中英

存儲在NSUserDefaults中的NSMutableArray不會保存數據

[英]NSMutableArray stored in NSUserDefaults won't save data

當用戶通過我的iPhone應用程序登錄時,我在NSUserDefaults中創建了一堆默認元素。 其中之一是NSMutableArray,我通過以下方式添加它:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSMutableArray *theArray = [NSMutableArray array];
[prefs setObject:theArray forKey:@"theArray"];

這可以完美地工作。 但是,當我想從theArray插入或檢索值時,出現了問題。 這是我應用程序中另一個文件的摘錄:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[[prefs objectForKey:@"theArray"] setValue:@"This is a value" forKey:@"aValue"];
NSLog(@"%@", [[prefs objectForKey:@"theArray"] valueForKey:@"aValue"]);

當代碼運行時,我希望在控制台中看到“這是一個值”,但我得到了:

2011-08-08 18:35:17.503 MyApp[7993:10d03] (
)

數組為什么是空的? 我已經嘗試使用具有相同結果的NSArray進行相同的操作。

當您將可變對象存儲到NSUserDefaults時,它存儲了它的不可變副本,因此您不能像這樣直接更改它。 您必須從默認設置中刪除可變的副本,將其更改,然后重新設置,以默認設置替換舊對象。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSMutableArray *mutableArrayCopy = [[prefs objectForKey:@"theArray"] mutableCopy];
[mutableArrayCopy addObject:@"some new value"];
[prefs setObject:mutableArrayCopy forKey:@"theArray"];
[mutableArrayCopy release];

NSArray * savedArray = [NSArray arrayWithObjects:@“ obj1”,@“ obj2”,@“ obj3”,nil];
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:savedArray forKey:@“ key_for_savedArray”];
[userDefaults同步];

//要檢索數組,請使用:

NSArray * retrivedArray = [userDefaults objectForKey:@“ key_for_savedArray”];

暫無
暫無

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

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