将更新坐标添加到NSMutableArray

时间:2014-03-02 14:26:09

标签: ios objective-c nsstring nsmutablearray cllocationmanager

我有一个跟踪用户位置的地图视图,我正在尝试将用户位置坐标添加到数组中并将其作为测试显示在textview中,但是最近的坐标正在显示,我希望它们显示作为textview中的列表,类似于NSlog。我想我错过了什么,但不知道是什么。

    _trackLat = [NSString stringWithFormat:@"%f",newLocation.coordinate.latitude];
    _trackLong = [NSString stringWithFormat:@"%f",newLocation.coordinate.longitude];
    _trackCoord = [NSString stringWithFormat:@"%@, %@", _trackLat, _trackLong];
    _trackArray = [[NSMutableArray alloc] initWithObjects:_trackCoord, nil];
    self.textView.text = self.trackCoord;
    NSLog(@"coord lat = %f, coord long: %f",newLocation.coordinate.latitude, newLocation.coordinate.longitude);

2 个答案:

答案 0 :(得分:2)

你应该创建一次数组:

NSMutableArray *trackArray = [NSMutableArray array];

因为(0x7fffffff正确提到)当你将指针设置为由[[NSArray alloc] init ...]创建的新数组时,你的数组会释放。

每个新坐标都执行:

[trackArray addObject: [NSString stringWithFormat: @"%f, %f\n", newLocation.coordinate.latitude, newLocation.coordinate.longitude]];
self.textView.text = [self.textView.text stringByAppendingString: trackArray.lastObject];

答案 1 :(得分:1)

我想在这里指出一些事情,第一个是每次尝试添加新坐标时看起来像是在分配/启动数组。执行此操作时,您将丢弃该阵列的先前内容。然后你永远不会将数组实际分配为文本字段的文本。

作为旁注,您不必构造字符串来自己保存坐标。您只需使用NSStringFromCGPoint(),然后传入您的纬度和经度。

NSString *coordinate = NSStringFromCGPoint(CGPointMake(newLocation.coordinate.longitude, newLocation.coordinate.latitude));

if (!self.trackArray) {
    self.trackArray = [[NSMutableArray alloc] init];
}

[self.trackArray addObject:coordinate];
[self.textView setText:[self.trackArray description]];