NSMutableArray - Add array at start

China☆狼群 提交于 2019-12-20 12:36:00

问题


It is a simple pull to refresh case. I have data loaded into table and have a mutable data array at back-end, I receive a array of new data and want to add this complete array at start of existing array.

One workaround is to create new array with new arrived data and then add previous array into it using addObjectsFromArray: method. Is there some workaround to add new data array to the start of previous array directly?


回答1:


First, build an NSIndexSet.

NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange:
    NSMakeRange(0,[newArray count])];

Now, make use of NSMutableArray's insertObjects:atIndexes:.

[oldArray insertObjects:newArray atIndexes:indexes];

Alternatively, there's this approach:

oldArray = [[newArray arrayByAddingObjectsFromArray:oldArray] mutableCopy];



回答2:


NSMutableArray offers the insertObjects:atIndexes: method, but it's easier to append the way you suggest using addObjectsFromArray:.




回答3:


-insertObject:atIndexes: is easy enough, and should (I believe) be more efficient than using -addObjects and swapping arrays. It'd probably end up looking something like this:

[existingResults addObjects:newResults atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newResults.count)]]`



回答4:


Creating a new array is probably your best solution, but you can also use a loop

NSUInteger index;

index = 0;
for ( id item in sourceArray )
{
    [destArray insertObject:item atIndex:index];
    index++;
}



回答5:


Just simple way:

NSMutableArray *arrayTmp = [firstArr addObjectsFromArray:myArray];
myArray = arrayTmp;


来源:https://stackoverflow.com/questions/22492706/nsmutablearray-add-array-at-start

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!