我正在嘗試調用保存在我的iPhone應用程序的設置包中的特定設置。我想根據保存的內容做一個if語句。我在實現文件的代碼如下所示:如何在iOS中調用特定用戶的默認設置
branchMatch = [[NSString alloc] initWithString:[defaults objectForKey:@"branch"]];
在設置文件的對象是特定分支的只是名字。我不斷收到SIGABRT錯誤,但我不知道爲什麼。
我正在嘗試調用保存在我的iPhone應用程序的設置包中的特定設置。我想根據保存的內容做一個if語句。我在實現文件的代碼如下所示:如何在iOS中調用特定用戶的默認設置
branchMatch = [[NSString alloc] initWithString:[defaults objectForKey:@"branch"]];
在設置文件的對象是特定分支的只是名字。我不斷收到SIGABRT錯誤,但我不知道爲什麼。
經過一番揪頭髮,我意識到,我需要從委託類而不是視圖控制器加載用戶默認值。
感謝您的所有輸入
你是否檢查objectForKey調用不返回零?
首先,不需要用另一個字符串初始化字符串。假設branchMatch是NSString*
,以下就足夠了:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
branchMatch = (NSString*)[defaults objectForKey:@"branch"];
其次,檢查是否objectForKey
返回nil
。很可能你的SIGABRT由於零。
編輯:直到用戶打開設置並明確更改它們時,這些值纔會出現在集合中。如果找不到該設置,則提供合理的價值由您決定(nil
)。設置包中的那些不會自動應用;他們僅用於設置應用程序正確初始化其用戶界面。
謝謝...我已將它重新編碼爲: NSString * branchName = [defaults objectForKey:@「branch」]; 和我的結果是返回一個「空」(我用alertview來顯示結果)。現在我不知道我爲什麼變得空。 – fmi
請參閱編輯....... –
我已經在設置root.plist中檢查了我的標識符,它絕對是「分支」。我的默認值是「埃德蒙頓」。本節的完整代碼是: NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * branchName = [defaults objectForKey:@「branch」]; UIAlertView中*警報= [[UIAlertView中的alloc] initWithTitle:@ 「分公司」 消息:BRANCHNAME 委託:自cancelButtonTitle:@ 「OK」 otherButtonTitles:無]; [alert show]; – fmi
而是執行此操作:
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
是的,這是...不知道爲什麼。 – fmi