2011-05-18 66 views
0

我試圖將UILabel值保存到NSUserDefaults。我做IBAction與此代碼:使用NSUserDefaults保存並檢索UILabel值

-(IBAction)saveData:(id)sender { 
    NSString *resultString = label.text; 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:resultString forKey:@"result"]; 
    [prefs synchronize]; 

} 

然後,我用Touch Up Inside它連接到按鈕。 什麼日誌顯示後,我按下了按鈕:

result = 0; 

當我第二次按下,然後它的作品。

result = "28.34"; 

什麼我做錯了,我怎麼能檢索結果?

EDIT

有了這個代碼我顯示結果的日誌。我採取了同樣的行動。

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]); 
+0

哪裏是你的日誌語句?請提供該部分代碼。 – 2011-05-18 17:47:30

+0

你在哪裏以及如何顯示結果? – 2011-05-18 17:50:39

+0

我不知道如何顯示NSUserDefaults的結果。看編輯的代碼。 – 2011-05-18 18:06:15

回答

0

你的代碼看起來正確的,所以這個問題可能不是您發佈的功能,而是包含您NSLog的代碼。您可能會以第一次設置時錯過的方式記錄該值。

0

你的日誌的說法應該是

的NSLog(@ 「%@」,[[NSUserDefaults的 standardUserDefaults] objectForKey:@ 「結果」]);

這應該在NSUserDefaults中設置對象後。

+0

第二次按下後仍然顯示正確的結果。你能幫我從NSUserDefaults檢索結果嗎?我不知道什麼代碼和我把它放在哪裏。 – 2011-05-18 18:30:59

+0

您正在使用鍵「result」將標籤值保存在NSUserDefaults中。爲了從NSUserDefaults中取回它的值,你需要編寫[[NSUserDefaults standardUserDefaults] objectForKey:@「result」]。但在獲得價值之前,我希望價值已經確定。您點擊按鈕即可設置該值。因此,當你第一次點擊按鈕時,你的值不會被設置在NSUserDefaults中,這是我的猜測。你的日誌語句是否在你的saveData中? – 2011-05-18 18:42:00

+0

我需要把代碼檢索值?在MyAppDelegate.m中?是的,Log語句在saveData中。 – 2011-05-19 04:17:54

0

中的appDelegate或在的viewController init方法添加到您的applicationDidFinishLaunching(你必須創建一個):

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
if(prefs == nil) 
{  
[prefs setObject:@"anything" forKey:@"result"]; 
    [prefs synchronize]; 
} 
+0

什麼也沒有發生 – 2011-05-20 14:49:31