【发布时间】:2014-04-24 22:06:48
【问题描述】:
这是一个简单的拉动刷新案例。我已将数据加载到表中并在后端有一个可变数据数组,我收到一个新数据数组并希望在现有数组的开头添加这个完整的数组。
一种解决方法是使用新到达的数据创建新数组,然后使用addObjectsFromArray: 方法将先前的数组添加到其中。是否有一些解决方法可以直接将新数据数组添加到前一个数组的开头?
【问题讨论】:
标签: ios ios7 nsmutablearray append
这是一个简单的拉动刷新案例。我已将数据加载到表中并在后端有一个可变数据数组,我收到一个新数据数组并希望在现有数组的开头添加这个完整的数组。
一种解决方法是使用新到达的数据创建新数组,然后使用addObjectsFromArray: 方法将先前的数组添加到其中。是否有一些解决方法可以直接将新数据数组添加到前一个数组的开头?
【问题讨论】:
标签: ios ios7 nsmutablearray append
首先,建立一个NSIndexSet。
NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange:
NSMakeRange(0,[newArray count])];
现在,利用NSMutableArray的insertObjects:atIndexes:。
[oldArray insertObjects:newArray atIndexes:indexes];
或者,有这种方法:
oldArray = [[newArray arrayByAddingObjectsFromArray:oldArray] mutableCopy];
【讨论】:
NSMutableArray 提供了insertObjects:atIndexes: 方法,但使用addObjectsFromArray: 建议的附加方式更容易。
【讨论】:
-insertObject:atIndexes: 很简单,并且应该(我相信)比使用-addObjects 和交换数组更有效。它可能最终看起来像这样:
[existingResults addObjects:newResults atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newResults.count)]]`
【讨论】:
创建一个新数组可能是您最好的解决方案,但您也可以使用循环
NSUInteger index;
index = 0;
for ( id item in sourceArray )
{
[destArray insertObject:item atIndex:index];
index++;
}
【讨论】:
简单的方法:
NSMutableArray *arrayTmp = [firstArr addObjectsFromArray:myArray];
myArray = arrayTmp;
【讨论】: