2011-01-13 43 views
4

在這裏遇到NSUserDefaults有些麻煩。NSUserDefaults不能正常工作

下面是我如何創建它:

NSString *theCity = @"Test City"; 
[[NSUserDefaults standardUserDefaults] setObject:theCity forKey:@"SavedCity"]; 

以下是我正在努力找回它:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"]) 
    { 
     NSLog(@"Key exists! %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"]); 
    } 
    else { 
     NSLog(@"No city saved!"); 
    } 

我的問題是,即使是「一鍵SavedCity「(我檢查Simulator目錄中的pref文件),它總是顯示」No city saved「。難道我做錯了什麼?

謝謝!

+0

這是否發生在一個香草應用?比如,這是否發生在您的應用以外的任何其他地方? – 2011-01-13 01:24:47

+0

@Dave沒有這是這個應用程序之前發生過的唯一一次。 – 2011-01-13 01:41:25

+0

通過按住應用程序圖標的鼠標並鍵入「quit」而不是使用xcode的停止按鈕來終止應用程序。這樣用戶默認會正確保存到數據庫。 – 2012-07-31 18:40:43

回答

10

你可以嘗試兩件事。

1)嘗試在設置字符串後同步用戶默認值。 [[NSUserDefaults standardUserDefaults] synchronize]

2)嘗試檢索使用-stringForKey:

0

你應該補充的是:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"] != nil) 

因爲要檢查,如果您保存的東西。

7

我遇到了類似的問題我自己最近的字符串。這是爲我修復的。

iOS Application Programming Guide

建議你除了程序在啓動時註冊所有默認的值,包括他們在您的設置綁定屬性列表。對於新安裝的應用程序,在設置應用程序運行之前,應用程序設置包中的默認首選項值不會被設置。這意味着如果用戶在運行設置前運行應用程序,則設置包中指定的默認值將不可用。在啓動時以編程方式設置這些值可確保您的應用程序始終具有適當的值。要以編程方式註冊默認值,請使用NSUserDefaults類的registerDefaults:方法。