Не могу делать математические операции с int из NSUserDefaults - PullRequest
0 голосов
/ 26 февраля 2012

у меня есть целочисленные данные, хранящиеся в NSUserDefaults, там мой код:

- (IBAction)addButton:(id)sender {
      NSInteger oldValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"myValue"];

    NSString *string1=[addTextField text];
    int add = [string1 floatValue];  
    int new = globalCalories;
    int old=oldValue;

    if(recomended.text==[NSString stringWithFormat:@"%i", oldValue]){
        **self.day = (int)roundf(old-add);
        dayLeft.text=[NSString stringWithFormat:@"%d", oldValue-add];
    }**

    else
    {
        self.day=(int)roundf(new-add);
        dayLeft.text=[NSString stringWithFormat:@"%d", day];
    }
}

Я скопировал весь код действия кнопки, на всякий случай, но пометил жирными строками кода, которые, похоже, не работают. Таким образом, он предполагает выполнять математические операции с сохраненными данными (oldValue), но когда я запускаю программы, на самом деле это не так, но вместо действительного значения программа «думает», что oldValue равно 0 (вместо действительного значения).

Итак, когда он содержит, например, число 2000, и я запускаю программу и вхожу в текстовое поле 500, предполагается, что это 1500 (2000-500), но оно показывает -500.

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Вы можете преобразовать рекомендуемый текст в целое число, используя это:

int recommendedValue = [recommended.text intValue];

, затем сравните числа.

0 голосов
/ 26 февраля 2012

Проблема в том, что == сравнил адреса es строки NSSt, а не их значения (см. Много вопросов SO).Для сравнения строк используйте метод isEqualToString: .

Однако в этом случае было бы еще лучше сравнить числа, т.е. преобразовать recomended.text в число и использовать метод intValue для dayLeft.

...