2010-11-01 94 views
0

我有一个数据字符串“纬度,经度,位置”存储为一个NSString。可可参考NSArray值

我想以不同的方式引用数据,所以我将它存储到NSArray中。

然后我将数据存储在容易阅读的NSString值中,并希望重复使用它们几次。

- (IBAction)convertButtonPressed:(id)sender 
{ 
NSString *returnData = @"49.1002,-102.1253,12-03-22-W3"; 

explode = [returnData componentsSeparatedByString:@","]; 

Latitude = [explode objectAtIndex: 0]; 
Longitude = [explode objectAtIndex: 1]; 
Location = [explode objectAtIndex: 2]; 
Query.text = [NSString stringWithFormat:@"%@", Location]; 
Result.text = [NSString stringWithFormat:@"%@, %@", Latitude, Longitude]; 
} 

然后,我将这些值设置为UILabel值。在这一点上我没有问题。我希望用户能够做的下一件事是将这些数据绘制到MKMapView上。所以我有一个UIButton设置来绘制数据。当它被点击时,一个新的ViewController滑入视图,我尝试传递数据,但是我没有任何运气。我的应用程序崩溃,而不是传递数据。

- (IBAction)plotButtonPressed:(id)sender; 
{ 
ShowMapViewController *showMap = [[ShowMapViewController alloc] initWithNibName:nil bundle:nil]; 

showMap.currentLocation = Location; 

showMap.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:showMap animated:YES]; 
} 

我想我的这个简单的问题是...我如何正确地储存我的变量,这样我可以将它们传递到我的ShowMapViewController。

+0

它碰撞了什么错误?此外,如果您希望ShowMapViewController绘制地图上的位置,您是否还需要将其经纬度传递给它? – Anna 2010-11-01 03:11:09

+0

为什么不建立一个拥有纬度,经度和位置属性的模型对象?然后你不需要处理字符串解析和解析。 – 2010-11-01 06:19:57

回答

1

它看起来像你在两个地方使用伊娃Longitude。在convertButtonPressed:中,您正在使用objectAtIndex:plotButtonPressed:从数组中提取数据,并且正在重新使用该值。

注意,当你得到的价值Location不使用与newalloc,或copy启动的方法,这意味着,如果你想要的值居住超越目前的自动释放池,你必须手动retain或者copy吧。你在这里没有这样做,所以在convertButtonPressed:plotButtonPressed:之间有一段时间,autorelease池被弹出,你的对象被释放,给你一个危险的悬挂指针。

+0

相关文档链接:http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html – 2010-11-01 06:18:52

+0

谢谢您的回复。我设法解决它昨晚通过添加保留到我的NSArray线。 – 2010-11-02 05:29:38