我试图实现containsObject但有两个参数,这可能吗?
目前我已经:
if ([ myArray containsObject:@"Object1", @"Object2"]){
return result;
} else {
return NO;
}
显然有太多的争论。我已经深入研究了Apple的文档,但我还没有找到任何东西。有什么建议?
答案 0 :(得分:2)
为什么不这样做?
if ([ myArray containsObject:@"Object1" ] && [ myArray containsObject:@"Object 2" ] ){
return result;
} else {
return NO;
}
答案 1 :(得分:1)
是太多的参数,containsObject是针对单个对象的。 (您可以阅读其官方文档here)要解决您的问题,请使用&&
运算符并分别对每个对象调用containsObject。
if ([myArray containsObject:@"Object1"] && [myArray containsObject@"Object2"]){
return result;
} else {
return NO;
}
答案 2 :(得分:1)
您必须单独评估它们。例如:
bool MONNSArrayContainsAllObjectsIn(NSArray* const pArray, NSArray* const pSought) {
assert(pArray);
assert(pSought);
assert(0 < pSought.count);
for (id at in pSought) {
if (false == [pArray containsObject:at]) {
return false;
}
}
return true;
}
然后您的代码变为:
return MONNSArrayContainsAllObjectsIn(myArray, @[@"Object1", @"Object2"]);
如果您正在使用已知数量的元素(在这种情况下为2),那么您可以避免创建临时数组 - 如果您希望进行优化并写出所需的所有变体,包括参数。其他答案详细说明了这种方法。
如果您要执行大型数组和许多比较,NSSet
可能更适合您的任务。