Простой вопрос об итерации двух массивов в target-c - PullRequest
2 голосов
/ 11 мая 2011

Я перебираю NSArray в target-c с помощью:

for (id object in array1) {
  ...
}

Теперь у меня есть другой массив2, и мне нужен доступ с тем же индексом текущего массива1.

Должен ли я использовать другой для заявления?

спасибо

Ответы [ 2 ]

7 голосов
/ 11 мая 2011

У вас есть несколько вариантов:

  1. Используйте c-стиль для цикла, как предложил Дан

  2. Отслеживание текущего индекса в отдельной переменной в режиме быстрого перечисления:

    int index = 0;
    for (id object in array1) {
       id object2 = [array2 objectAtIndex:index];
       ...
       ++index;
    }
    
  3. Использование метода enumerateObjectsUsingBlock: (ОС 4.0 +):

    [array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
        id obj2 = [array2 objectAtIndex:idx];
        ...
    }];
    
4 голосов
/ 11 мая 2011

Если вам нужно обмениваться индексами, вы можете использовать стиль c для цикла:

for( int i = 0; i < [array1 count]; ++i )
{
    id object2 = [array2 objectAtIndex:i];
    //Do something with object2
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...