Pergunta

Eu sinto que perdi a cabeça. Alguém pode me dizer o que está acontecendo aqui? Além disso, tenho certeza de que há uma maneira melhor de fazer o que estou tentando fazer, mas não estou interessado nisso agora. Eu gostaria de resolver o mistério de por que minhas INTs não estão respondendo à lógica como esperado.

// 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;
}

Quando depurar o código acima com o meu relógio definido para 12: XX AM, o número inteiro "Hour" retornou é 0. Mas, em seguida, qualquer declaração if com a condição se (hora == 0) não for avaliada. Da mesma forma, isso também não seria avaliado: se (hora <1). O código acima coloca a hora INT em outro Int, selecionado (não se preocupe com o motivo de fazer isso por enquanto), mas o SelectedHour sofre do mesmo comportamento estranho; A linha if (selecionadahour <= 0) nunca é avaliada. Estou ficando louco ou sou apenas um idiota? Talvez haja algum comportamento de 0 números inteiros dos quais não estou ciente. Todo o meu código é bom, desde que não seja 12: xx am.

Foi útil?

Solução

Foi um problema com a minha instalação do Xcode, com mais curiosidade. Apenas reinstale tudo e está funcionando corretamente agora. Estranho porque estava apenas causando comparações aos números inteiros de valor "0".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top