我觉得我失去了理智。有人能告诉我这里发生了什么吗?另外,我确信有更好的方法来做我想做的事情,但我现在对此不感兴趣。我只是想解开为什么我的整数没有按预期响应逻辑的谜团。
// 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,我的所有代码都可以正常运行。