嗨,我现在有一些代码给我错误(&#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;
}
答案 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;
}