大家好我已经实现了如下所示的代码,但是当运行此代码时,它正在终止并在下面显示异常如何处理异常以获取iphone中的纬度和经度
- (CLLocationCoordinate2D) geoCodeUsingAddress: (NSString *) address
{
CLLocationCoordinate2D myLocation;
NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSString *req = [NSString stringWithFormat: @"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
NSDictionary *googleResponse = [[NSString stringWithContentsOfURL: [NSURL URLWithString: req] encoding: NSUTF8StringEncoding error: NULL] JSONValue];
NSDictionary *resultsDict = [googleResponse valueForKey: @"results"];
NSDictionary *geometryDict = [resultsDict valueForKey: @"geometry"];
NSDictionary *locationDict = [geometryDict valueForKey: @"location"];
NSArray *latArray = [locationDict valueForKey: @"lat"];
NSString *latString = [latArray lastObject];
NSArray *lngArray = [locationDict valueForKey: @"lng"];
NSString *lngString = [lngArray lastObject];
myLocation.latitude = [latString doubleValue];
myLocation.longitude = [lngString doubleValue];
NSLog(@"lat: %f\tlon:%f", myLocation.latitude, myLocation.longitude);
return myLocation;
}
控制台出错:
[1055:11603] -[__NSCFString JSONValue]: unrecognized selector sent to instance 0xabcc200
[1055:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString JSONValue]: unrecognized selector sent to instance 0xabcc200'
*** First throw call stack:
(0x16ee052 0x13d9d0a 0x16efced 0x1654f00 0x1654ce2 0x25a5 0x248f 0x16efec9 0x3945c2 0x39455a 0x439b76 0x43a03f 0x4392fe 0x3b9a30 0x3b9c56 0x3a0384 0x393aa9 0x1de4fa9 0x16c21c5 0x1627022 0x162590a 0x1624db4 0x1624ccb 0x1de3879 0x1de393e 0x391a9b 0x1dcd 0x1d45)
terminate called throwing an exception(lldb)
答案 0 :(得分:2)
您可能忘记包含您的json库,并且缺少NSString
JSONValue类别。
答案 1 :(得分:0)
它似乎是开发版本中的一个错误。尝试使用稳定版from here
答案 2 :(得分:-1)
您基本上是将JSONValue消息发送到NSString实例,这就是您的应用程序崩溃的原因,在这里:
NSDictionary *googleResponse = [[NSString stringWithContentsOfURL: [NSURL URLWithString: req] encoding: NSUTF8StringEncoding error: NULL] JSONValue];