2014-03-02 35 views
0

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

_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

你应该再创建数组:

NSMutableArray *trackArray = [NSMutableArray array]; 

因为(正确为0x7FFFFFFF提到的)你的阵列得到释放,当您将指针您通过[NSArray的页头] init建立新的数组.. ]。

每个新坐标做:

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

有一对夫妇的事情,我想在这里指出,第一个是它看起来你是分配/ INITING阵列的每你尝试添加新的坐标。当你这样做时,你放弃数组的前一个内容。然后你永远不会真的把数组赋值为文本字段的文本。

作为一个方面说明,您不必自行构建字符串来保存坐标。你可以简单地使用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]]; 
+0

我不认为你可以传递一个NSArray类型的指针到setText:这会给你至少一个编译器警告! – hacker2007

+0

@ hacker2007谢谢指出,这是早!我忘了描述必须明确地在这里调用,因为这不是日志。 –