如何在我的iphone应用程序中检查布尔设置

如何在我的iphone应用程序中检查布尔设置,iphone,boolean,nsuserdefaults,Iphone,Boolean,Nsuserdefaults,我在Root.plist中有一个设置,其Key='latestNews'类型为PSToggleSwitchSpecifier,DefaultValue为选中的布尔值。如果我理解正确,那么当我将其拉入代码时,它应该=YES。我试图检查该值,并设置一个int-var将其传递给我的php脚本。发生的情况是,我的布尔值为nil或NO,然后我的int-var=0。我做错了什么 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults

我在Root.plist中有一个设置,其Key='latestNews'类型为PSToggleSwitchSpecifier,DefaultValue为选中的布尔值。如果我理解正确,那么当我将其拉入代码时,它应该=YES。我试图检查该值,并设置一个int-var将其传递给我的php脚本。发生的情况是,我的布尔值为nil或NO,然后我的int-var=0。我做错了什么


    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    int latestFlag = ([[prefs objectForKey:@"latestNews"] isEqualToString:@"On"]) ? 1 : 0;

    NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.mysite.com/folder/iphone-test.php?latest=%d", latestFlag];
    NSURL *url = [[NSURL alloc] initWithString:urlstr];

    //these are auto-released
    NSString *ans = [NSString stringWithContentsOfURL:url];
    NSArray *listItems = [ans componentsSeparatedByString:@","];

    self.listData = listItems;

    [urlstr release];
    [url release];

更新:
真正的问题是我无法检索任何设置值。我将布尔设置更改为字符串,类似于books示例。所以现在我的设置有一个TrueValue=“On”和一个带有DefaultValue=“On”的false value=“Off”。我现在正试图用上面的代码检索此设置。如果这是默认值,则它应该=“On”,但我的int值最终为=0,这表明我根本无法读取设置。

设置布尔值时,请将其设计为从未设置过的值与设置为false的值相同。如果希望选中复选框的默认状态,则在值为false时将其设置为选中,在值为true时取消选中

在您的情况下,将名称更改为“notLatestNews”,并将逻辑更改为匹配

BOOL latestNews = ![[NSUserDefaults standardUserDefaults] boolForKey:@"notLatestNews"];

我想我明白你的意思。但是,在plist文件中,如果将“DefaultValue”设置为“Boolean”类型,则值字段将更改为复选框。如果选中该复选框,则该设置的默认值应始终为“是”正确??我可以更改我的逻辑,但我认为我的问题仍然存在,即我无法正确读取设置值。没有任何要求“是”与复选框关联。如果您不想反转首选项的含义,可以使用“defaultsVersion”首选项,如果它与当前版本不匹配,请将其与任何应具有默认值的首选项一起设置。如果你只是想区分nil和YES和NO,那么在使用boolValue之前,使用objectForKey检查nil,而不仅仅是boolForKey。只是想注意,我要花3天的周末。所以我会回到周一早上,让你知道结果。再次感谢你的帮助。StackOverflow太棒了!我更新了上面的问题。为了避免布尔值出现任何异常,我将开关值更改为字符串,类似于我在书中使用的方式。但是,在书中,他们将设置值添加到视图上显示的UILabel中。我不想显示值,我只想用它来控制传递给我的PHP的内容。我仍在调查,但我开始认为问题与将我的应用程序连接到Settings.bundle有关。书中的AppSettings示例应用程序以实用程序应用程序模板开始,而我的应用程序只是一个基于视图的标准应用程序。因此,我试图比较其他一些代码的差异。