0

我在 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"。我现在正在尝试使用上面的代码检索此设置。鉴于这是默认值,它应该 =“开”,但是我的 int 最终 = 0,这表明我根本没有读取设置。

4

1 回答 1

2

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

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

BOOL latestNews = ![[NSUserDefaults standardUserDefaults] boolForKey:@"notLatestNews"];
于 2010-05-06T23:46:06.800 回答