无法比较if语句中的值

问题描述:

我是新来的ios。我想检查陈述是否属实,但是这种情况即使在虚假的情况下也是如此。无法比较if语句中的值

NSMutableArray *passengers=loginObj.passengers; 
PassengerObj *passenger=[passengers objectAtIndex:0]; 
    if([[passenger checkedIn] objectAtIndex:0]) 
    { 
     [somestatement]; 
    } 

调试器

_checkedIn __NSCFArray * @"1 object" 0x168b8200 
    >[0] __NSCFBoolean * @"0" 0x37e696d4 
+1

我相信'@“0”'因为它不是'nil'而评估为'true'。 – Arc676

+0

你们但如何正确地做到这一点? –

+0

对象始终是“@”0“'还是”@“1”'? – Arc676

假设您的阵列只包含包含一个1或0,你可以比较字符串:

if ([[[passenger checkedIn] objectAtIndex:0] isEqualToString:@"0"]) 

当然,这将是更具可读性,以便拥有一组NSNumber s和使用

if ([[[passenger checkedIn] objectAtIndex:0] boolValue]) 
+3

对于If语句的内容来说,它更具可读性,并且作为返回bool的方法提取,并将其称为“IsPassenderCheckedIn”。这是我喜欢用我的“复杂”或冗长的陈述来做的事情;之后它就像散文一样。 –

+0

谢谢,我会这样做 –