我有一个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 |第一次pull时缓存数据的全部内容
1 |第二次pull时缓存数据的全部内容
等。解析完KML后,我运行以下代码:
[masterData insertObject:cachedData atIndex:masterDataCounter];
[cachedData removeAllObjects];
masterDataCounter++;
这是正确的方法吗?例如,我如何引用在第二次运行中存储的数据点总数?
对吗?由于某种原因,当我尝试它时,我没有得到正确的结果:
[[masterData objectAtIndex:1] count];
对于初学者来说,有一种更好的方法来编写我上面描述的片段。
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:latitude,@"latitude",longitude,@"longitude",color,@"color",nil];
[cachedData addObject:dict];
[dict release];
对于第二个代码片段,它可以重写为:
[masterData insertObject:[[cachedData copy] autorelease] atIndex:masterDataCounter];
masterDataCounter++;
从这个yes,你确实可以引用主masterData NSMutable数组,如下所示:
[[masterData objectAtIndex:desiredIndexNumber] count];