NSMutableArray - 在开头添加数组

16

这是一个简单的下拉刷新案例。我已经在表格中加载了数据,并且在后端有一个可变的数据数组,我收到一个新数据数组并希望将这个完整的数组添加到现有数组的开头。

一种解决方法是创建一个新数组来存储新到达的数据,然后使用addObjectsFromArray:方法将之前的数组添加到它里面。是否有一种直接将新数据数组添加到之前数组的开头的方法?

5个回答

59
首先,构建一个NSIndexSet
NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange:
    NSMakeRange(0,[newArray count])];

现在,使用NSMutableArrayinsertObjects:atIndexes:方法。
[oldArray insertObjects:newArray atIndexes:indexes];

另外,还有这种方法:

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

替代方案对我来说是最简单的解决方案。 (y) - Prasanna

2

NSMutableArray 提供了 insertObjects:atIndexes: 方法,但使用你建议的 addObjectsFromArray: 方法更容易实现追加操作。


1

-insertObject:atIndexes: 很容易,而且应该(我相信)比使用 -addObjects 和交换数组更有效率。它可能看起来像这样:

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

简单而美好:) 我相信 newResults.count 应该是 newResults.count-1。 - Adnan
我不这么认为;NSMakeRange()的第二个参数是计数,而不是结束索引。但还是谢谢! :-) - Siobhán

1
创建一个新的数组可能是您最好的解决方案,但您也可以使用循环。
NSUInteger index;

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

0

只需要简单的方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接