检查数组是否包含两个对象

时间:2014-11-24 18:32:55

标签: ios objective-c nsarray foundation

我试图实现containsObject但有两个参数,这可能吗?

目前我已经:

if ([ myArray containsObject:@"Object1", @"Object2"]){
    return result;
} else {
    return NO;
}

显然有太多的争论。我已经深入研究了Apple的文档,但我还没有找到任何东西。有什么建议?

3 个答案:

答案 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可能更适合您的任务。