[英]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.