2011-10-27 59 views
0

Hi某些機構給了我一個想法。保存並重新設置IPhone中的NSUserDefault的值

我正在使用NSUserDefault要保存和重試保存代碼的值是。

dataDict_=[[NSMutableDictionary alloc]init]; 
    [dataDict_ setObject:[nameText_ text] forKey:@"Name"]; 
    [dataDict_ setObject:[linkText_ text] forKey:@"Link"]; 
    NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults]; 
    [userDefault setObject:dataDict_ forKey:@"Dict"]; 
    [[NSUserDefaults standardUserDefaults]synchronize]; 
    [dataDict_ release]; 

和retriving代碼是

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
    NSMutableDictionary *favourites = [[standardUserDefaults objectForKey:@"Dict"] mutableCopy]; 

現在的問題是,與此代碼我能夠保存和一次性retrive數據如果我在那個時候我的新再次拯救的幫助價值重疊到最後的價值。

我需要在NSUserDefault中保存其他頁面的值,並在其他頁面上進行檢索並添加到數組中並顯示在表格中。

我想逐個添加10個名稱到NSUserDefault,並從userdefault和display中恢復。

但是在這段代碼的幫助下,只有新的數據可以檢測到我和最後的數據與新數據重疊。

請給我解決方案如何解決這個問題。

NSLog(@"The dict value is %@",favourites); 
+0

如果你想在用戶默認的同時存儲不同的字典,你必須在你的代碼中使用不同的鍵:'[userDefault setObjct:dataDict_ forKey:@「Dict」]''' – Denis

回答

1

不是存儲一個值,存儲陣列:

// Create a data dictionary for this name & link 
dataDict_=[[NSMutableDictionary alloc]init]; 
[dataDict_ setObject:[nameText_ text] forKey:@"Name"]; 
[dataDict_ setObject:[linkText_ text] forKey:@"Link"]; 

// Get the current array from user defaults 
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; 
NSMutableArray *favourites = [[userDefault objectForKey:@"favourites"] mutableCopy]; 
if (nil == favourites) favourites = [[NSMutableArray alloc] init]; 

// Add the new details to it 
[favourites addObject:dataDict]; 

// Store the array in the user defaults 
[userDefault setObject:favourites forKey:@"favourites"]; 
[userDefault synchronize]; 

// Release 
[favourites release]; 
[dataDict release]; 

現在,爲了讓所有的細節背出用戶默認的,你得到的,而不是一組細節

數組
NSArray *favourites = [[NSUserDefaults standardUserDefaults] objectForKey:@"favourites"];