我有一个跟踪用户位置的地图视图,我正在尝试将用户位置坐标添加到数组中并将其作为测试显示在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);
答案 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]];