Скажите Программе, что делать, если не найдено никаких сохраненных данных NSUserDefaults, iPhone - PullRequest
0 голосов
/ 02 апреля 2010

Я сохранил данные, которые были сохранены с помощью NSUserDefaults. У меня сложилось впечатление, что если на ключе уже ничего не было сохранено (приложение запускается в первый раз), оно по умолчанию будет равно 0. Однако это не так.

Вот что у меня есть:

Для сохранения:

- (void)viewWillDisappear:(BOOL)animated
{
[[NSUserDefaults standardUserDefaults] setInteger:setbatteryHealthCalculated     forKey:@"healthValue"];

    [[NSUserDefaults standardUserDefaults] synchronize];

}

Для загрузки:

- (void) viewWillAppear:(BOOL)animated
{
NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults]     integerForKey:@"healthValue"];
}

Чтобы проверить значение сохранения:

- (IBAction)check{

    NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults] integerForKey:@"healthValue"];


    if  (setbatteryHealthCalculated = 0) {

                [self performSelector:@selector(displayAlert) withObject:nil];

}
}

Ответы [ 2 ]

3 голосов
/ 02 апреля 2010
if  (setbatteryHealthCalculated = 0) {

Эммы. Должно быть

if  (setbatteryHealthCalculated == 0)

Оператор сравнения == вместо = в C-подобных языках.

Исходный код установит setbatteryHealthCalculated в 0, несмотря ни на что. Поскольку 0 равно false, ветвь if никогда не будет выполнена, и предупреждения не будут отображаться.

Кроме того, исходный код имеет несбалансированные фигурные скобки.


Кстати, setbatteryHealthCalculated ивар? Если да, удалите NSInteger перед ним. В противном случае вы объявляете локальную переменную, которая затеняет ивара.

2 голосов
/ 02 апреля 2010

Позвоните registerDefaults: во время запуска вашего приложения, чтобы установить значения по умолчанию для ваших значений по умолчанию (неудобно говорить, но так оно и работает). Вам нужно будет позвонить до любого кода, который обращается к вашим настройкам по умолчанию. Но NSUserDefaults возвращает 0 или ноль для ключей, которые не существуют.

...