我正在编写一个请求来自外部源(Twitter)的数据的应用程序,它按时间顺序作为有序数组返回:
外部阵列
我将这些项目添加到另一个保持相同顺序的数组:
我的阵列
然后我再次查询外部源并接收另一个新项目数组,如下所示:
新外部阵列
我将它们添加到我的数组中并得到它:
我的阵列
问题是外部数组数据是按照时间顺序排序的,最初的项目最初是A,因为现在进行了更新。所以你可以看到数组的排序现在是错误的,我需要的是:
我的阵列
我的代码目前看起来像这样:
NSMutableArray *myArray = [[NSMutableArray alloc] init];
...
- (void)getDataFromExternalSource:(NSArray *)externalArray
{
for(NSDictionary *item in externalArray) {
// Need loop so I can do some extra stuff here with each item object (not shown in this example.)
[myArray addObject: item];
}
}
答案 0 :(得分:4)
NSArray *newArray = [externalArray arrayByAddingObjectsFromArray:myArray];
[myArray release];
myArray = [newArray mutableCopy];
有什么理由不这样做?
答案 1 :(得分:1)
只需将新数组用作第一个数组,然后添加旧项目。
NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:externalArray.count + myArray.count];
for(NSDictionary *item in externalArray) {
// Need loop so I can do some extra stuff here with each item object (not shown in this example.)
[newArray addObject: item];
}
[newArray addObjectsFromArray:myArray];
答案 2 :(得分:0)
您应该将数组用作堆栈,因此旧项目会被推到新项目之下。你可以通过使用[myArray addObject:newObject];
添加最后位置的每个元素来实现这一点。您必须在原始数组中向后迭代才能将它们从最旧到最新插入。您可以通过执行以下操作来实现:
for(NSUInteger index = [newArray count] - 1; i == 0; i--)
{
NSDictionary*object = [newArray objectAtIndex:index];
[myArray addObject:object];
}
通过这种方式,您将获得所需的阵列
干杯