2

このコードは、Xcode 4.4 (ipad シミュレーター 5.1) で動作するのに、Xcode 4.5 (ipad 6.0 シミュレーター) では動作しないのはなぜですか?

- (IBAction)capitalDButtonTwo:(id)sender {
    if ([capitalDResultLabelTwo text] == @"+") {
        [capitalDResultLabelTwo setText:@"0"];
    } else {
        [capitalDResultLabelTwo setText:@"+"];
    }
}

これは、最初に押されたときに同じビューのラベルのテキストを「+」に設定し、その後押されるたびにテキストを「0」に設定し、次に「+」に設定するボタンです。この単純なコードが機能しないのは、バージョンごとに何が大きく異なるのだろうか

4

1 に答える 1

1

どちらの Xcode バージョンでも動作しないはずです。文字列を正しく比較していません:

このステートメントは、2 つのオブジェクトがまったく同じオブジェクトである[capitalDResultLabelTwo text] == @"+"かどうかをテストします。NSStringあなたが意図したことは、ラベルの内容が と同じであるかどうかをテストする"+"ことであり、したがって、 を使用する必要があります[NSString isEqualToString:]

- (IBAction)capitalDButtonTwo:(id)sender {
    if ([[capitalDResultLabelTwo text] isEqualToString:@"+"]) {
        [capitalDResultLabelTwo setText:@"0"];
    } else {
        [capitalDResultLabelTwo setText:@"+"];
    }
}
于 2012-09-28T08:43:18.897 に答える