Возможно ли пересечение NSMutableArray так же, как может быть пройден ассоциативный массив в PHP, с циклом foreach? Я хочу получить «ключ» и «значение» в каждом прохождении цикла. У меня есть NSMutableArray, и я хочу использовать его как ассоциативный массив, чтобы пересечь его и изменить его таким же образом, что я бы изменил ассоциативный массив в PHP. Возможно ли это, или мне нужно использовать более сложную структуру, например NSMutableDictionary, для этой цели?В объективе-C, как перемещаться по индексам (ключам) и объектам в NSMutableArray с использованием цикла foreach
ответ
Если вы хотите использовать 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
.
Если я хочу, какое поведение, извините? В любом случае, я думаю, что первое решение, которое вы дали, для меня лучше, потому что оно менее сложно. Спасибо за помощь! –
@VladimirDespotovic, если вы хотите иметь пользовательские ключи в своем «массиве», например. строки или числа, такие как идентификаторы, которые не увеличиваются последовательно от 0. В PHP это не имеет никакого значения, но в Objective-C вы можете использовать только 'NSArray' с индексами, идущими от 0 и без пробелов. –
Спасибо. Пожалуйста, не стесняйтесь поднимать мой вопрос и мои комментарии, так как я не думаю, что это бесполезный вопрос (вопреки некоторым другим, которые считают его отрицательным вопросом и дали мне нисходящее, по какой-то причине неизвестное мне ...). –
Не могли бы вы привести конкретный пример? Похоже, вы хотите злоупотреблять массивом, но это не ясно. – Avi
Я хочу использовать что-то вроде (NSNumber * obj in self.items) { } , а затем извлекать ключ и объект в каждом проходе цикла. –
В массиве нет ключа. Есть индекс. – Avi