Добавить объекты из одного массива в другой в определенной позиции - PullRequest
5 голосов
/ 03 марта 2011

У меня есть два изменяемых массива: firstArray и secondArray.Оба населены объектами.Я хочу добавить объекты из secondArray в firstArray в определенной точке (не в конце и не в начале) в firstArray.Есть ли способ сделать это?В настоящее время я использую только эту строку кода:

[self.firstArray addObjectsFromArray:secondArray];

Что мне нужно, так это FOO CODE: self.firstArray addObjectFromArray В СПЕЦИАЛЬНОЙ ТОЧКЕ X: secondArray, specificpointX)

Любая помощь приветствуется!

Ответы [ 3 ]

14 голосов
/ 03 марта 2011

Отвечая на мой собственный вопрос, это работает:

 int z;
 z = (int)self.specificPosition;

 // Start adding at index position z and secondArray has count items

 NSRange range = NSMakeRange(z, [secondArray count]);     
 NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
 [self.firstArray insertObjects:secondArray atIndexes:indexSet];
1 голос
/ 03 марта 2011

Ознакомьтесь с документацией для NSMutableArray .

Вам просто нужно использовать функцию insertObject:AtIndex:.

Ниже приведен простой пример, где я создаюмассив размером 10 и добавить объект с индексом 5.

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10];
[myArray insertObject:@"Hello World" AtIndex:5];

Надеюсь, это поможет.

0 голосов
/ 23 апреля 2018

Swift:

let insetIndex = 3  // your any insert index
var array1 = ["1", "2", "3", "4", "5"]
let array2 = ["10", "11"]
array1.insert(contentsOf: array2, at: insetIndex)

OC:

int loc = 3;  // your any insert index
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil];
NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"10", @"11", nil];

NSRange range = NSMakeRange(loc, array2.count);  // NOTE: NSMakeRange(NSUInteger loc, NSUInteger len)  len must be your array2.cout, or will crash with differs from count of index set

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
[array1 insertObjects:array2 atIndexes:indexSet];

вывод: ["1", "2", "3", "10", "11", "4", "5"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...