目标C:使用BOOL返回' YES'如果可以适用条件

时间:2014-12-04 19:52:24

标签: objective-c loops for-loop boolean nsnumber

嗨,我现在有一些代码给我错误(&#34; 0&#34;)不等于(&#34; 50&#34;) - 条件没有正确应用< / strong>基本上我当前在BOOL中使用传统的for循环,它遍历项目列表并检查条件是否可以应用,如果它可以应用于项目,则BOOL将返回YES。我看不出我目前哪里出错了,需要指导。我的代码如下所示:

-(BOOL)conditionCanBeApplied:(NSArray *)items{
       bool itemConditionCanBeApplied = NO;
       for (int i = 0; i < items.count; i++) 
       {
            id myItem = [[items valueForKeyPath:@"itemId"]objectAtIndex: i];
             if ([self.applicableItems containsObject:myItem]) {
                    itemConditionCanBeApplied = YES;
              }
       }   
            return itemConditionCanBeApplied;   
}

1 个答案:

答案 0 :(得分:0)

首先,不要混用BOOL和bool,它们可能非常相似,但它们的数据类型不同。其次,如果您有选择,请始终使用快速枚举。我在下面的代码中假设您的items集合类似于NSArray。此外,由于测试是一个布尔语句,因此没有理由仅使用if语句来设置BOOL。 (我在我的例子中这样做是为了允许休息)最后,一旦你有至少一场比赛,让你的逻辑短路会使处理器不再做不必要的工作。

做这样的事情:

- (BOOL)conditionTest 
{
    BOOL itemConditionCanBeApplied = NO;
    for (id item in items) {
        if ([self.applicableItems containsObject:item]) {
            itemConditionCanBeApplied = YES;
            break;
        }
    }

    return itemConditionCanBeApplied;
}