如何使用NSDictionary将NSMutableArray复制到另一个NSMutableArray中

时间:2011-07-14 16:08:16

标签: nsmutablearray nsdictionary

我有一个KML文件,我每隔10秒就用NSURL调用一次。在方法中,我正在执行以下操作来存储数据的纬度,经度和颜色。

cachedData是一个NSMutableArray实例变量。

masterData是一个NSMutableArray实例变量。

masterDataCounter是一个int实例变量。

[cachedData addObject:[[[NSDictionary alloc] 
                    initWithObjectsAndKeys:latitude,@"latitude",longitude,@"longitude",color,@"color",nil] autorelease]];

解析数据后,我想将cachedData数组的全部内容保存到关联数组(如上所述的masterData)中,这样我就可以通过索引引用它,然后清除cachedData以保存在内存中。

实施例

数组的索引|数据存储

0 |第一次拉动缓存数据的全部内容

1 |第二次拉动的缓存数据的全部内容

KML解析后,我运行以下代码:

[masterData insertObject:cachedData atIndex:masterDataCounter];
[cachedData removeAllObjects];
masterDataCounter++;

这是正确的方法吗?我如何参考例如第二次运行中存储的数据点总数?

是吗?出于某种原因,当我尝试时,我得不到正确的结果:

[[masterData objectAtIndex:1] count];

1 个答案:

答案 0 :(得分:0)

对于初学者来说,有一种更好的方式来编写我上面描述的片段。

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:latitude,@"latitude",longitude,@"longitude",color,@"color",nil];
[cachedData addObject:dict];
[dict release];

对于第二个代码段,可以将其重写为:

[masterData insertObject:[[cachedData copy] autorelease] atIndex:masterDataCounter];
masterDataCounter++;

从这一点开始,您确实可以引用主masterData NSMutable数组,如下所示:

[[masterData objectAtIndex:desiredIndexNumber] count];