【问题标题】:How to check a bool setting in my iphone app如何检查我的 iPhone 应用程序中的布尔设置
【发布时间】:2010-05-06 23:23:16
【问题描述】:

我在 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];

更新: 真正的问题是我无法检索任何设置值。我将布尔设置更改为字符串,类似于书籍示例。所以现在我的设置有一个 TrueValue = "On" 和一个 FalseValue = "Off" 和一个 DefaultValue = "On"。我现在正在尝试使用上面的代码检索此设置。鉴于这是 DefaultValue,它应该 =“On”,但是我的 int 最终 = 0,这表明我根本没有读取设置。

【问题讨论】:

  • 我仍在调查,但我开始认为这个问题与将我的应用程序连接到 Settings.bundle 有关。书中的 AppSettings 示例应用程序以实用程序应用程序模板开始——而我的应用程序只是一个标准的基于视图的应用程序。所以我正在尝试比较其他一些代码的差异。

标签: iphone boolean nsuserdefaults


【解决方案1】:

当你设置一个布尔值时,将它设计成从未设置它就等于它是假的。如果你想让一个复选框的默认状态被选中,那么当值为false时将其设置为选中,当值为true时将其取消选中。

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

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

【讨论】:

  • 我想我明白你在说什么。但是,在 plist 文件中,如果将“DefaultValue”设置为“Boolean”类型,则值字段将更改为复选框。如果您选中该复选框,则该设置的默认值应始终为“YES”正确?我可以改变我的逻辑,但我认为我的问题仍然存在,我无法正确读取设置值。
  • 没有什么要求 YES 与选中的复选框相关联。如果您不想反转首选项的含义,您可以使用“defaultsVersion”首选项,如果它与您当前的版本不匹配,请将其与任何应具有默认值的首选项一起设置。如果您只想区分 nil 与 YES 和 NO,请在使用 boolValue 而不是 boolForKey 之前使用 objectForKey 检查 nil。
  • 只是想说明我将度过一个为期 3 天的周末。所以我会回到这个星期一早上,让你知道结果。再次感谢你的帮助。 StackOverflow 太棒了!
  • 我在上面更新了我的问题。为了避免布尔值出现任何异常,我将开关值更改为字符串,类似于他们在我正在使用的书中的做法。但是,在书中,他们将设置值添加到 UILabel 中,这些值会显示在视图上。我不想显示该值,我只想用它来控制传递给我的 PHP 的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 2011-03-19
  • 2011-07-06
相关资源
最近更新 更多