簡體   English   中英

NSUserDefaults在設置之前返回

[英]NSUserDefaults returns before it has been set

我正在制作一個帶兩個字符串和一個int的應用程序。 我希望這些顯示在另一個視圖上。

我把它們放入一個數組中,我試圖將它們存儲在NSUserDefaults中。 我已設法存儲此數據。 我遇到的問題是當我更改數據並再次保存時獲取數組的函數在設置它之前被調用。 因此應用程序始終顯示以前的數據。

我認為通過改變調用函數的時間來修復是很容易的。

但是從我看來的代碼來看,他們的順序是正確的。

2012-09-26 13:55:02.764 BeerDivider[4377:907] array returnd = (
    2,
    "Person 1",
    "Person 2"
)
2012-09-26 13:55:02.773 BeerDivider[4377:907] array saved = (
    5,
    "Person 1",
    "Person 2"
)

我可以通過記錄數組來看到它們以錯誤的順序被調用。

請任何人都能看到我出錯的地方。 這是我的第一個目標-c / xcode帖子,所以不確定你想看到什么代碼。 我會把所有這些都放進去。

http://pastebin.com/BX5gqp17

對不起,如果這是很多代碼。

謝謝您的幫助。

編輯:更新代碼

EDIT2:我認為正在發生的事情類似於這個iOS在prepareSegue之前做按鈕的動作

首先看一下NSUserDefault的 Apple文檔
NSUserDefault始終返回您保存在其中的數據

別忘了寫[defaults synchronize];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:yourArray forKey:@"YourKey"]
    [defaults synchronize];

根據你給出的代碼。

-(void)saveInfo:(NSArray *)myArray
    {
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:myArray forKey:@"array"];
    [defaults synchronize];
    NSLog (@"array saved = %@", [defaults objectForKey:@"array"]);
    }  

現在檢查結果

做這個:

-(void)saveInfo:(NSArray *)myArray
{
    [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"array"];
    [[NSUserDefaults standardUserDefaults] synchronize]; //u forgot this
    NSLog (@"array saved = %@", myArray);
}

暫無
暫無

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

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