Как проверить настройку bool в моем приложении для iphone - PullRequest
0 голосов
/ 07 мая 2010

У меня есть настройка в Root.plist с Key = 'latestNews' типа PSToggleSwitchSpecifier и DefaultValue в качестве логического значения, которое проверено. Если я правильно понимаю, это должно = ДА, когда я добавляю это в свой код. Я пытаюсь проверить это значение и установить 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, однако мой int заканчивается = 0, что говорит о том, что я вообще не могу прочитать настройку.

1 Ответ

2 голосов
/ 07 мая 2010

Когда вы устанавливаете логическое значение, проектируйте его так, чтобы его никогда не было равным ложному. Если вы хотите установить флажок по умолчанию, установите для него значение флажка, если значение равно false, и снимите флажок, если значение равно true.

В вашем случае измените имя на notLatestNews и измените логику для соответствия.

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