Я чувствую, что сошел с ума. Может кто-нибудь сказать мне, что здесь происходит? Кроме того, я уверен, что есть лучший способ сделать то, что я пытаюсь сделать, но мне это сейчас не интересно. Я просто хотел бы разгадать тайну того, почему мои интты не реагируют на логику, как ожидалось.
// 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 с условием if (hour == 0) не оцениваются. Кроме того, это также не будет оцениваться: если (час <1). Приведенный выше код помещает час int в другой int, selectedHour (не беспокойтесь о том, почему я делаю это сейчас), но selectedHour страдает от того же странного поведения; строка if (selectedHour <= 0) никогда не вычисляется. Я схожу с ума, или я просто идиот? Может быть, есть поведение 0 целых чисел, о котором я не знаю. Весь мой код работает нормально до тех пор, пока он не 12: XX AM. </p>