1

私は私の心を失ったように感じます。誰かがここで何が起こっているのか教えてもらえますか? また、私がやろうとしていることを行うためのより良い方法があると確信していますが、今はそれには興味がありません. int が期待どおりにロジックに応答しない理由の謎を解きたいと思います。

// Set "At: " field close to current time
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH"];
int hour = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 
[dateFormatter setDateFormat:@"mm"];
int minute = [[dateFormatter stringFromDate:[NSDate date]] intValue];
NSLog(@"currently %i:%i",hour, minute);

if(hour >= 12){ // convert to AM/PM
    selectedMeridiem = 1;
    if(hour != 12){
        hour = hour - 12;
    }
}
else{
    selectedMeridiem = 0;
    if(hour == 0){
        hour = 12;
    }
}

NSLog(@"test");

selectedHour = hour - 1;

if(selectedHour <= 0){
    selectedHour = 11;
}

クロックを 12:XX AM に設定して上記のコードをデバッグすると、返される整数の「時間」は 0 です。ただし、条件 if(hour == 0) を含む if ステートメントは評価されません。同様に、これも評価されません: if(hour < 1). 上記のコードは、別の int である selectedHour に時間の int を入れています (なぜ今これを行っているかは気にしないでください) が、selectedHour は同じ奇妙な振る舞いをします。if(selectedHour <= 0) 行は評価されません。私は頭がおかしくなっていますか、それともただのばかですか? たぶん、私が気付いていない 0 整数の動作があるでしょう。午前 12 時 XX 時でない限り、私のコードはすべて正常に実行されます。

4

1 に答える 1

0

奇妙なことに、Xcodeのインストールに問題がありました。すべてを再インストールするだけで、正常に動作しています。値「0」の整数との比較がオフになっているだけなので、奇妙です。

于 2010-04-06T00:50:25.313 に答える