2015-06-09 46 views
0

當我第一次使用NSUserDefault保存數據時,它會成功保存數據。當我關閉應用程序並重新開始時,我得到的是舊數據,但同樣使用NSUserDefault。新的數據來了,但我的舊數據不來。我想要新舊數據。那麼對此有什麼解決方案?如何使用NSUserDefault保存舊數據和新數據

存儲數據

NSUserDefaults *userDefaults ; 
    if(![[NSUserDefaults standardUserDefaults] objectForKey:@"mydata"]) 
    { 
     userDefaults = [NSUserDefaults standardUserDefaults]; 
     [userDefaults setObject:app.arr_defult forKey:@"mydata"]; 
     [userDefaults synchronize]; 

    } 
    else 
    { 

     NSLog(@"Leaderboards Dict Exists %@", [NSUserDefaults standardUserDefaults]); 
     userDefaults = [NSUserDefaults standardUserDefaults]; 
     [userDefaults setObject:app.arr_defult forKey:@"mydata"]; 
     [userDefaults synchronize]; 

    } 

讀取數據:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    arrayOfImages = [userDefaults objectForKey:@"mydata"]; 
+0

在不同的頁面保存數據和讀取數據.. – Nirav

+1

@Nirav,首先訪問你的NSUserDefault數組。然後在這個數組中添加新數據(稱爲新數組)。現在將您的數據數組存儲在NSUserDefault中。這是一個非常基本的場景。 –

回答

0
Everything is fine .just you add new data with same key first you get old data from nsuserdefault and add you both data(old and new) in nsuserdefault.i think is work fine.. 


    // First Time 

    NSUserDefaults *userDefaults ; 
    userDefaults = [NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:app.arr_defult forKey:@"mydata"]; 
    [userDefaults synchronize]; 


    // second Time 

    NSMutableArray *temparray1=[[NSMutableArray alloc] init]; 
    [temparray1 addObject:[[NSUserDefaults standardUserDefaults] objectForKey:@"mydata"]]; 
    [temparray1 addObject:app.arr_defult]; 
    [userDefaults setObject:temparray1t forKey:@"mydata"]; 
    [userDefaults synchronize]; 
+0

感謝bro for your suggestion.i在temparray1中獲取更新值,但我無法在讀取的數據中獲取更新值。它只顯示我舊的價值。 – Nirav

1

這不是一個很好的做法,存儲龐大的數據集NSUserDefaults的。

是NSUserDefaults的僅用於存儲應用程序一樣的偏好, 設定偏好的數據量小等

使用核心數據處理您的場景。