在NSMutableArray中搜索不在其中的值

时间:2013-09-20 08:41:35

标签: ios nsmutablearray

我有两个NSMutableArrayhorasPosiblesarrayCodigos。我需要保存horasPosibles中不在arrayCodigos内的值。这是尝试做的,但在第二行显示“预期”的错误消息。

for(NSInteger i=0; i < [horasPosibles count];i++) {
   if ([horasPosibles objectAtIndex:i] in arrayCodigos) {
        NSLog(@"YES!");
    }
    else{
        [codigos addObject:[horasPosibles objectAtIndex:i]];
    }
}

可能是什么问题?

5 个答案:

答案 0 :(得分:2)

试试此代码

for(id obj in horasPosibles)
    {
        if (![arrayCodigos containsObject:obj])
        {
            [codigos addObject:obj];
        }
    }

答案 1 :(得分:2)

使用NSSet您可以轻松完成此操作。

    NSMutableSet *intersection = [NSMutableSet setWithArray: horasPosibles];
    [intersection minusSet:[NSSet setWithArray: arrayCodigos]];


    codigos = [intersection allObjects];
    NSLog(@"%@", codigos);

答案 2 :(得分:1)

迭代array1&amp;在array2中搜索它。如果找到,请将它添加到array3(如果它还没有)。

for (MyObject* obj in array1)
{ 
     if([array2 containsObject:obj] && ![array3 containsObject:obj])
        [array3 addObject:obj];
}

如果array1没有重复项,则不需要进行第二次检查。

答案 3 :(得分:1)

if ([horasPosibles objectAtIndex:i] in arrayCodigos)

语法错误,应该是

if ([arrayCodigos containsObject:[horasPosibles objectAtIndex:i]])

但您可以简化您的完整代码

codigos = [horasPosibles mutableCopy];       // make a copy
[codigos removeObjectsInArray:arrayCodigos]; // remove all objects from other array

答案 4 :(得分:0)

试试这个:

for(NSInteger i=0; i < [horasPosibles count];i++){
    if ([horasPosibles containsObject:[arrayCodigos objectAtIndex:i]]) {
        NSLog(@"YES!");
    }else{
        [codigos addObject:[horasPosibles objectAtIndex:i]];
    }
}