2013-09-20 3 views
0

У меня есть два NSMutableArray, horasPosibles и arrayCodigos. Мне нужно сохранить значения из horasPosibles, которые не находятся внутри arrayCodigos. Это то, что вы пытаетесь сделать, но получите сообщение об ошибке во второй строке, которая говорит «Ожидаемый».Поиск внутри NSMutableArray значения, которые не находятся внутри

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

В чем может быть проблема?

+0

Первый '[horasPosibles objectAtIndex: я] в arrayCodigos' недействителен синтаксис, используйте' containsObject: 'вместо этого, что, конечно, зависит от вида объектов. Во-вторых, «NSSet» идеально подходит для этой ситуации. – Alladinian

+0

Я пытаюсь сравнить со строками в обоих массивах – PlugInBoy

ответ

2

Используя NSSet, вы можете легко это сделать.

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


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

Это немного отличается от исходного кода, поскольку он удаляет повторяющиеся элементы из массива. Это может иметь значение или нет. –

+0

Это решит мою проблему! Большое спасибо, вы не только поможете мне решить эту проблему, но и сделайте меня новым стилем NSSet! Спасибо – PlugInBoy

+0

@PlugInBoy yrw :). –

1

Iterate over array1 & найти его в массиве2. Если он найден, добавьте его в массив 3, если он его уже не имеет.

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

Если у вас массив 1 не содержит повторяющихся элементов, вам не нужна вторая проверка.

2

Попробуйте этот код

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

Попробуйте это:

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

неправильно синтаксис и должен быть

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

Но вы можете упростить ваш полный код

+0

Я пробую эти и тоже отлично работает! Удивительный день, я открываю 2 способа сделать это! – PlugInBoy

+0

@PlugInBoy: Добро пожаловать! –

Смежные вопросы