2016-09-15 6 views
-1

Возможно ли пересечение NSMutableArray так же, как может быть пройден ассоциативный массив в PHP, с циклом foreach? Я хочу получить «ключ» и «значение» в каждом прохождении цикла. У меня есть NSMutableArray, и я хочу использовать его как ассоциативный массив, чтобы пересечь его и изменить его таким же образом, что я бы изменил ассоциативный массив в PHP. Возможно ли это, или мне нужно использовать более сложную структуру, например NSMutableDictionary, для этой цели?В объективе-C, как перемещаться по индексам (ключам) и объектам в NSMutableArray с использованием цикла foreach

+1

Не могли бы вы привести конкретный пример? Похоже, вы хотите злоупотреблять массивом, но это не ясно. – Avi

+0

Я хочу использовать что-то вроде (NSNumber * obj in self.items) { } , а затем извлекать ключ и объект в каждом проходе цикла. –

+2

В массиве нет ключа. Есть индекс. – Avi

ответ

1

Если вы хотите использовать NSMutableArray, то вы можете использовать следующий код для обхода массива при доступе как индекс и объект:

NSMutableArray *someArray = ...; 
for (NSUInteger index = 0; index < someArray.count; index++) { 
    NSNumber *object = someArray[index]; // Assuming the array stores NSNumber*s 
    ... 
} 

Другим вариантом будет использовать блок перечисления предоставленный SDK :

NSMutableArray *someArray = ...; 
[someArray enumerateObjectsUsingBlock:^(NSNumber* object, NSUInteger index, BOOL *stop) { 
    ... 
}]; 

Обратите внимание: массивы имеют индексы вместо пользовательских ключей. Индекс должен начинаться с 0 и не может иметь промежутков между ними. Если вы хотите этого поведения, используйте NSMutableDictionary.

+0

Если я хочу, какое поведение, извините? В любом случае, я думаю, что первое решение, которое вы дали, для меня лучше, потому что оно менее сложно. Спасибо за помощь! –

+1

@VladimirDespotovic, если вы хотите иметь пользовательские ключи в своем «массиве», например. строки или числа, такие как идентификаторы, которые не увеличиваются последовательно от 0. В PHP это не имеет никакого значения, но в Objective-C вы можете использовать только 'NSArray' с индексами, идущими от 0 и без пробелов. –

+1

Спасибо. Пожалуйста, не стесняйтесь поднимать мой вопрос и мои комментарии, так как я не думаю, что это бесполезный вопрос (вопреки некоторым другим, которые считают его отрицательным вопросом и дали мне нисходящее, по какой-то причине неизвестное мне ...). –

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

  • Нет связанных вопросов^_^