Как вставить массив в существующий NSMutableArray с указанным индексом c - PullRequest
1 голос
/ 15 апреля 2020

Я пытался использовать

NSMutableArray *existingArray = [@[@"1", @"3", @"4"] mutableCopy];
NSArray *newItems = @[@"2", @"2", @"2", @"2"];
[existingArray insertObjects:newItems atIndexes:[NSIndexSet indexSetWithIndex:1]];

Выше код заканчивается сбой, потому что я предполагаю предоставить все индексы для всех новых элементов.

Я хочу иметь возможность вставьте newItems в позицию 1 существующего массива, сохраняя порядок newItems и в конечном массиве.

Есть ли простой способ предоставить все эти индексы?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Правильный ответ без комментариев ...

NSInteger position = 1;
NSRange range = NSMakeRange(position, newItems.count);
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
[existingArray insertObjects:newItems atIndexes:indexSet];
1 голос
/ 15 апреля 2020

Вы можете вставить, «заменив» пустой диапазон:

[existingArray replaceObjectsInRange:NSMakeRange(1, 0) withObjectsFromArray:newItems];
...