Ios 比较NSMutableArray

Ios 比较NSMutableArray,ios,objective-c,nsmutablearray,comparison,Ios,Objective C,Nsmutablearray,Comparison,我有两条蓝线。假设我有两个数组 数组1={A,B,Y,E,p,Q,M,S,R,Q} array2={Y,L,T} 我想检查array2的值是否存在于数组1中并得到结果,如果所有值都存在,则返回null,如果没有任何值,则将其放入数组中 因为根据评论,顺序对您来说并不重要,所以实现这一点的最简单方法是使用NSSet: NSArray *array0 = @[@"A", @"B",@"C",@"E",@"F",@"G",@"H",@"I"]; NSArray *array1 = @[@"E", @"

我有两条蓝线。假设我有两个数组

数组1={A,B,Y,E,p,Q,M,S,R,Q} array2={Y,L,T}


我想检查array2的值是否存在于数组1中并得到结果,如果所有值都存在,则返回null,如果没有任何值,则将其放入数组中

因为根据评论,顺序对您来说并不重要,所以实现这一点的最简单方法是使用
NSSet

NSArray *array0 = @[@"A", @"B",@"C",@"E",@"F",@"G",@"H",@"I"];
NSArray *array1 = @[@"E", @"H"];
NSMutableSet *result = [NSMutableSet setWithArray:array0];
[result minusSet:[NSSet setWithArray:array1]];

您可以使用
索引ObjectsPassingTest:

NSIndexSet *indexesOfObjectsNotInArray1 = [array2 indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    return [array1 indexOfObjectIdenticalTo:obj] == NSNotFound;
}];
NSArray *objectsNotInArray1 = [array2 objectsAtIndexes:indexesOfObjectsNotInArray1];

您可以迭代这两个数组,然后比较对象

for (int i = 0; i < [array2 count]; i++)
    {
        for (int j = 0; j < [array1 count]; j++) {
            if (![[array1 objectAtIndex:j] isEqual:[array2 objectAtIndex:i]]) {
                // objects are different
                // manipulate the objects here (use index j to reference object in array1)
                NSLog(@"array 1 index %d (%@) and array 2 index %d (%@) are unequal", j, [array1 objectAtIndex:j], i, [array2 objectAtIndex:i]);
            }
        }
    }
for(int i=0;i<[array2 count];i++)
{
对于(int j=0;j<[array1 count];j++){
if(![[array1 objectAtIndex:j]相等:[array2 objectAtIndex:i]]{
//对象是不同的
//在此处操纵对象(使用索引j引用array1中的对象)
NSLog(@“数组1索引%d(%@)和数组2索引%d(%@)不相等”,j,[array1 objectAtIndex:j],i,[array2 objectAtIndex:i]);
}
}
}

这听起来是一项相对容易的任务。你们试过为它写代码吗?所以你们想要一个不同的数组?顺序重要吗(以后你会排序吗)?对于(array2中的id对象){if([array1 containsObject:object]){}}顺序不重要,我只需要差分数组。我想看看array2值是否在array1中。如果没有,那么我必须对那些不存在的值执行一些功能。array1={A,B,Y,E,P,Q,M,S,R,Q}array2={Y,L,T}对于这个数组,我无法得到结果,L和T。当我使用两个
NSString
对象数组进行测试时,它对我有效。您确定在执行上述代码时数组已初始化吗?您得到了什么结果?您应该使用
isEqual:
来比较两个对象,因为
=比较它们在内存中的地址,而不是字符串的值;当然,你的方法在任何方面都有效!