2010-09-14 49 views
1

我創建了一個Settings.bundle我的申請,我嘗試下面的代碼讀取設置:從standardUserDefaults獲得零,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if(!defaults) 
{ 
    NSLog("can not get default bundle"); 
} 
NSString *usr = [NSString stringWithFormat:@"%@",[defaults stringForKey:@"username"]]; 
NSLog(usr); 

在控制檯輸出爲(空)。我以前使用過它,它工作。這種情況發生在我升級到iOS的最新xcode之後。我不確定是否有任何改變?

這是從我的Settings.bundle屏幕截圖。

alt text

回答

0

stringForKey:將返回nil

它返回nil,因爲它找不到「用戶名」的密鑰。

它找不到「用戶名」的關鍵字,因爲該關鍵字不存在於該應用程序的用戶默認值中。

該鍵不存在,因爲(A)它從來不存在,對於該應用程序,或(B)它存在但被刪除。 (A)如果通過Springboard刪除應用程序,或者整個設備(模擬器)被重置,則可能在設備或模擬器上發生。這兩種情況都是真的嗎? (B)如果您在代碼中執行了某些操作以刪除密鑰,可能會發生這種情況。你能證實情況並非如此嗎?

+0

我可以確認這與這兩種情況無關。 – nababa 2010-09-14 23:30:54

+0

您確定「應用程序名稱」的值在應用程序退出前已被您的應用程序保存並保存嗎? – 2010-09-14 23:37:40

+0

是的,有一個默認值,我可以在模擬器的「設置」中看到默認值。 – nababa 2010-09-15 00:14:18

0

如果您在模擬器中切換模擬器(新建或迴歸SDK)或運行不同的操作系統版本,則可能無法在這些不同的模擬器運行之間運行任何會話信息(包括默認值)。

+0

但是,在手動輸入設置中的用戶名後,我仍然沒有找到零。 – nababa 2010-09-14 23:31:58

+0

在你運行應用程序之前還是之後(或者兩者兼而有之)? – hotpaw2 2010-09-15 00:20:14