簡體   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