繁体   English   中英

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

[英]Checking if array contains two objects

我正在尝试实现带有两个参数的containsObject,这可能吗?

目前我有:

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

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

为什么不这样做呢?

if ([ myArray containsObject:@"Object1" ] && [ myArray containsObject:@"Object 2" ] ){
    return result;
} else {
    return NO;
}

太多的争论,containsObject是针对单个对象。 (您可以在此处阅读其官方文档)要解决问题,请使用&&运算符,并分别对每个对象调用containsObject。

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

您将不得不分别评估它们。 例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM