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) を使用して数学演算を行うと想定されていますが、プログラムを起動すると実行されません。

たとえば、番号 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のアドレスesを比較し、それらの値を比較しないことです(多くのSOの質問を参照)。文字列を比較するには、isEqualToString:メソッドを使用します。

ただし、この場合、数値を比較する、つまりrecomended.textを数値に変換し、dayLeftでintValueメソッドを使用することをお勧めします。

于 2012-02-26T13:34:58.030 に答える