我遇到问题CLGeocoder
,如果我尝试使用CLGeocoder
获取地址名称,并且用户当前坐标正确返回{{1}中的地址名称,邮政编码,状态等{1}}但是,如果我尝试在NSLog
[包含在NSString
中发送这些信息,但我不认为这是问题],则会返回NSMutableArray
值。我怀疑这个问题是由我在代码中使用的块引起的,但我不确定,而且我不知道如何解决这个问题。
这是我的代码:
(null)
一张照片:
有人可以帮我这个吗?如果发布的代码不足以让您理解问题,我会粘贴更多行。
由于
答案 0 :(得分:0)
您正在执行地理编码块之前创建字符串。它应该是这样的:
- (NSArray *)dataArrayPosizione
{
if (self.arrayPosizione == nil)
{
reverseGeocoder = [[CLGeocoder alloc] init];
locationToReverseGeocode = [[CLLocation alloc]initWithLatitude:self.mapView.userLocation.location.coordinate.latitude longitude:self.mapView.userLocation.location.coordinate.longitude];
[reverseGeocoder reverseGeocodeLocation:locationToReverseGeocode completionHandler:^(NSArray *placemarks, NSError *error)
{
informazioniPosizione = [NSMutableArray new];
if (placemarks && placemarks.count > 0)
{
placemark = placemarks[0];
NSLog(@"\n%@ %@\n%@, %@, %@\n%@", [placemark subThoroughfare],[placemark thoroughfare], [placemark locality], [placemark administrativeArea], [placemark postalCode], [placemark country]);
[informazioniPosizione addObject:[NSString stringWithFormat:@"Indirizzo: %@", [placemark country]]];
[informazioniPosizione addObject:[NSString stringWithFormat:@"Latitudine: %g\u00B0\nLongitudine: %g\u00B0", self.mapView.userLocation.location.coordinate.latitude, self.mapView.userLocation.location.coordinate.longitude]];
}
self.arrayPosizione = informazioniPosizione;
return self.arrayPosizione;
}];
}
}
答案 1 :(得分:0)
CLGeocoder
的块将异步执行,因此当您尝试使用它时,尚未设置地标变量。像bachonk建议的那样,在地理编码器的块内移动代码。将地标的信息添加到数组后,您只需在tableView上调用-[UITableView reloadData]
即可显示信息。