NSMutableArray - добавить массив в начале
Это простой пример для обновления. У меня есть данные, загруженные в таблицу, и у меня есть переменный массив данных во внутреннем интерфейсе, я получаю массив новых данных и хочу добавить этот полный массив в начале существующего массива.
Одним из способов является создание нового массива с новыми данными, а затем добавление в него предыдущего массива с использованием метода addObjectsFromArray:
. Есть ли способ обхода для добавления нового массива данных в начало предыдущего массива напрямую?
Ответы
Ответ 1
Сначала постройте NSIndexSet
.
NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange:
NSMakeRange(0,[newArray count])];
Теперь используйте NSMutableArray
insertObjects:atIndexes:
.
[oldArray insertObjects:newArray atIndexes:indexes];
Альтернативно, существует такой подход:
oldArray = [[newArray arrayByAddingObjectsFromArray:oldArray] mutableCopy];
Ответ 2
NSMutableArray
предлагает метод insertObjects:atIndexes:
, но проще добавить способ, который вы предлагаете, используя addObjectsFromArray:
.
Ответ 3
-insertObject:atIndexes:
достаточно прост и должен (я считаю) быть более эффективным, чем использование -addObjects
и замены массивов. Вероятно, это будет выглядеть примерно так:
[existingResults addObjects:newResults atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newResults.count)]]`
Ответ 4
Создание нового массива, вероятно, является лучшим решением, но вы также можете использовать цикл
NSUInteger index;
index = 0;
for ( id item in sourceArray )
{
[destArray insertObject:item atIndex:index];
index++;
}
Ответ 5
Просто простой способ:
NSMutableArray *arrayTmp = [firstArr addObjectsFromArray:myArray];
myArray = arrayTmp;