Подтвердить что ты не робот

NSMutableArray - добавить массив в начале

Это простой пример для обновления. У меня есть данные, загруженные в таблицу, и у меня есть переменный массив данных во внутреннем интерфейсе, я получаю массив новых данных и хочу добавить этот полный массив в начале существующего массива.

Одним из способов является создание нового массива с новыми данными, а затем добавление в него предыдущего массива с использованием метода addObjectsFromArray:. Есть ли способ обхода для добавления нового массива данных в начало предыдущего массива напрямую?

4b9b3361

Ответ 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;