0

我有整数数据,存储在 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。

4

2 回答 2

1

您可以使用以下方法将Recommended.text 转换为整数:

int recommendedValue = [recommended.text intValue];

然后比较数字。

于 2012-02-26T22:29:47.993 回答
0

问题是 == 比较了 NSString 的地址而不是它们的值(请参阅许多 SO 问题)。要比较字符串,请使用isEqualToString:方法。

然而,在这种情况下,比较数字会更好,即将recomended.text 转换为数字并在dayLeft 上使用intValue 方法。

于 2012-02-26T13:34:58.030 回答