2011-11-08 44 views
1

我正在嘗試調用保存在我的iPhone應用程序的設置包中的特定設置。我想根據保存的內容做一個if語句。我在實現文件的代碼如下所示:如何在iOS中調用特定用戶的默認設置

branchMatch = [[NSString alloc] initWithString:[defaults objectForKey:@"branch"]]; 

在設置文件的對象是特定分支的只是名字。我不斷收到SIGABRT錯誤,但我不知道爲什麼。

回答

0

經過一番揪頭髮,我意識到,我需要從委託類而不是視圖控制器加載用戶默認值。

感謝您的所有輸入

1

你是否檢查objectForKey調用不返回零?

+0

是的,這是...不知道爲什麼。 – fmi

6

首先,不需要用另一個字符串初始化字符串。假設branchMatch是NSString*,以下就足夠了:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
branchMatch = (NSString*)[defaults objectForKey:@"branch"]; 

其次,檢查是否objectForKey返回nil。很可能你的SIGABRT由於零。

編輯:直到用戶打開設置並明確更改它們時,這些值纔會出現在集合中。如果找不到該設置,則提供合理的價值由您決定(nil)。設置包中的那些不會自動應用;他們僅用於設置應用程序正確初始化其用戶界面。

+0

謝謝...我已將它重新編碼爲: NSString * branchName = [defaults objectForKey:@「branch」]; 和我的結果是返回一個「空」(我用alertview來顯示結果)。現在我不知道我爲什麼變得空。 – fmi

+0

請參閱編輯....... –

+0

我已經在設置root.plist中檢查了我的標識符,它絕對是「分支」。我的默認值是「埃德蒙頓」。本節的完整代碼是: NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * branchName = [defaults objectForKey:@「branch」]; UIAlertView中*警報= [[UIAlertView中的alloc] initWithTitle:@ 「分公司」 消息:BRANCHNAME 委託:自cancelButtonTitle:@ 「OK」 otherButtonTitles:無]; [alert show]; – fmi

1

而是執行此操作:

NSUserDefault* defaults = [NSUserDefauls standardUserDefaults]; 
NSString* setting = [defaults objectForKey:@"branch"]; 
if (setting) 
    // Do what needed if branch is set 
else 
    // Do what needed if branch has never been set 
相關問題