如何在iOS中调用特定用户的默认设置

问题描述:

我正在尝试调用保存在我的iPhone应用程序的设置包中的特定设置。我想根据保存的内容做一个if语句。我在实现文件的代码如下所示:如何在iOS中调用特定用户的默认设置

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

在设置文件的对象是特定分支的只是名字。我不断收到SIGABRT错误,但我不知道为什么。

经过一番揪头发,我意识到,我需要从委托类而不是视图控制器加载用户默认值。

感谢您的所有输入

你是否检查objectForKey调用不返回零?

+0

是的,这是...不知道为什么。 – fmi

首先,不需要用另一个字符串初始化字符串。假设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

而是执行此操作:

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