Objective-C In-In Loop Получить индекс

Рассмотрим следующее утверждение:

for (NSString *string in anArray) {

    NSLog(@"%@", string);
}

Как я могу получить индекс string в anArray без использования традиционного цикла for и без проверки значения string с каждым объектом в anArray?

Ответ 1

Массивы гарантированно повторяются в порядке объектов. Итак:

NSUInteger index = 0;
for(NSString *string in anArray)
{
    NSLog(@"%@ is at index %d", string, index);

    index++;
}

В качестве альтернативы используйте перечислитель блоков:

[anArray
    enumerateObjectsUsingBlock:
       ^(NSString *string, NSUInteger index, BOOL *stop)
       {
           NSLog(@"%@ is at index %d", string, index);
       }];

Ответ 2

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

for (NSString *string in anArray)
{
  NSUInteger index = [anArray indexOfObject:string];
}