嗨,我现在有一些代码给我错误("0")不等于("50") - 条件未正确应用 基本上,我目前正在 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;
}
首先,不要混合使用 bool 和 bool,它们可能非常相似,但它们的数据类型不同。其次,如果有选择,请始终使用快速枚举。我在下面的代码中假设您的项目集合类似于 NSArray。此外,没有理由使用 if 语句进行测试只是为了设置 BOOL,因为测试是一个布尔语句。(我在我的示例中这样做是为了允许休息)最后,通过中断来短路逻辑可以防止处理器在至少有一个匹配项后执行不必要的工作。
做这样的事情:
- (BOOL)conditionTest
{
BOOL itemConditionCanBeApplied = NO;
for (id item in items) {
if ([self.applicableItems containsObject:item]) {
itemConditionCanBeApplied = YES;
break;
}
}
return itemConditionCanBeApplied;
}