【问题标题】:How to find If array contains two or more objects如何查找数组是否包含两个或多个对象
【发布时间】:2016-03-28 11:18:59
【问题描述】:

我正在尝试实现 containsObject 但有两个或更多参数,这可能吗?

目前我有:

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

if ([ myArray containsObject:@"1", @"2"]){
    NSLog(@"if");
} else if([ myArray containsObject:@"1", @"2",@"3",@"4"]) {
   NSLog(@"else if");
}else if([ myArray containsObject:@"1", @"2",@"3"]) {
   NSLog(@"else");
}

myArray:-

myArray is (
    1,
    2,
    3,
    4
)

【问题讨论】:

    标签: ios nsarray


    【解决方案1】:

    您可以检查数组的子集

     NSArray *arry1= [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
            NSArray *arry2= [NSArray arrayWithObjects:@"1",@"2", nil];
    
            NSSet *set1 = [NSSet setWithArray:arry1];
            NSSet *set2 = [NSSet setWithArray:arry2];
    
            if ([set2 isSubsetOfSet:set1])
            {
                NSLog(@"array1 contains all elements of array 2");
            }else{
                NSLog(@"array1 does not contains all elements of array 2");
            }
    

    【讨论】:

    • 我已经提供了完整的源代码并且工作正常。发布你的代码你是如何使用它的。
    • 你的第一个答案工作我在检查时出错了
    【解决方案2】:
    if ([myArray containsObject:@"1"] || [ myArray containsObject: @"2"]) {
        NSLog(@"if");
    } else {
       NSLog(@"else");
    }
    

    【讨论】:

    • 这适用于您要检查 2 或 3 个对象的情况。如果要检查很多对象,请使用@Gandalf 代码
    【解决方案3】:

    您需要编写自己的自定义代码。将方法中所需的所有对象作为数组传递并遍历所有对象的数组。如果没有找到任何对象,return false。

    -(BOOL)containsObjects:(NSArray*)arrObj
    {
        BOOL result = YES;
        for(CustomObject *cObj in arrObj) {
            result = [mainArray containsObject:cObj];
            if(result == NO) {
                break;
            }
        }
    
        return result;
    }
    

    【讨论】:

    • 这个 CustomObject 是什么?
    • @Krish 这是一个类名。这是一个通用解决方案,您可以在其中比较任何类型的对象。在您的情况下,如果您的数组包含字符串对象,您可以在它的位置使用 NSString 或 id 类型。
    • 这不合适,因为在我的情况下,有时我的数组 havin9 (1,2,3,4) 有时可能有 (2,3) 值
    猜你喜欢
    • 2015-01-22
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多