IOS 比较 2 个 NSArray

IOS Compare 2 NSArray

我有 2 个数组,

array1: 我有 3 个对象。

array2: 我有 4 个对象。

我想比较 2 个数组中的每个对象。

这是我的代码:

for (int i = 0; i < check1.count; i++) {
    for (int j = 0; j < check2.count; j++) {
        if ([[check1 objectAtIndex:i] isEqualToArray:[check2 objectAtIndex:j]])
        {
            NSLog(@"same");
            [cellContact.iconnewmessage setHidden:NO];
        }
    }
}

但是,我遇到了错误: 'NSInvalidArgumentException',原因:'-[__NSCFString 计数]:发送到实例 0x7b97d280 的无法识别的选择器'

我真的不知道你想做什么.. 但是如果你想在索引处一个一个地比较值..

NSArray *array1 = @[@1,@2,@3,@4];
NSArray *array2 = @[@1,@5,@6];

for (int i=0;i < array1.count;i++)
{
    if (array2.count > i)
        if (array1[i] == array2[i])
        {
            NSLog(@"Same:%@ at index:%d", array1[i], i);
        }
}

//如果检查内容

//for counting similar objects
int similarObjects = 0;

for (int i=0;i < array1.count;i++)
{
    if ([array2 containsObject:array1[i]])
    {
        NSLog(@"both contains:%@", array1[i]);

        similarObjects++;
    }
}
NSLog(@"similarObjects :%d", similarObjects);

顺便说一句 check1 在你的代码中不是一个数组,这是导致错误的原因。 希望这对您有所帮助

您可以使用此代码:

int similarObjects = 0;

for (int i=0;i < array1.count;i++)
{
    if ([array2 containsObject:array1[i]])
    {
        NSLog(@"both contains:%@", array1[i]);

        similarObjects++;
    }
}
NSLog(@"similarObjects :%d", similarObjects);

无需重新实现框架固有的功能。

if([[NSSet setWithArray:check1] intersectsSet:[NSSet setWithArray:check2]])
{
    NSLog(@"same");
    [cellContact.iconnewmessage setHidden:NO];
}

如果您想遍历数组,请使用 for(ObjectType *object in array),不要保留一些手动索引计数器。 NSArrays 没有保证随机访问的复杂性。

要访问数组中的项目 i,只需使用 array[i]