1

我觉得我失去了理智。有人能告诉我这里发生了什么吗?另外,我确信有更好的方法来做我想做的事情,但我现在对此不感兴趣。我只是想解开为什么我的整数没有按预期响应逻辑的谜团。

// 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)。上面的代码将 hour int 放入另一个 int, selectedHour (不要担心我现在这样做的原因),但是 selectedHour 遭受同样奇怪的行为;if(selectedHour <= 0) 行永远不会被评估。我是疯了,还是我只是个白痴?也许有一些我不知道的 0 整数的行为。只要不是 12:XX AM,我的所有代码都可以正常运行。

4

1 回答 1

0

奇怪的是,我的 Xcode 安装出现了问题。刚刚重新安装了所有东西,它现在可以正常工作了。很奇怪,因为它只是导致对值“0”的整数的比较被关闭。

于 2010-04-06T00:50:25.313 回答