gpt4 book ai didi

objective-c - verseGeocodeLocation 存储为 NSString 产生错误

转载 作者:行者123 更新时间:2023-11-29 04:14:29 26 4
gpt4 key购买 nike

我正在尝试使用reverseGeocodeLocation返回用户的状态。我正在使用此代码从另一个 View 中提取用户的位置。

NSString *userState =[(PDCAppDelegate *)[UIApplication sharedApplication].delegate     
getAddressFromLocation];

我收到以下错误:“NSInvalidArgumentException”,原因:“-[PDCAppDelegate getAddressFromLocation]:无法识别的选择器发送到实例。我在 PDCAppDelegate 中使用的返回地址的代码如下。

-(NSString *)getAddressFromLocation:(CLLocation *)location {
NSString *address;
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError
*error)
{
if(placemarks && placemarks.count > 0)
{
CLPlacemark *placemark= [placemarks objectAtIndex:0];

NSString *address = [NSString stringWithFormat:@"%@ %@,%@ %@", [placemark
subThoroughfare],[placemark thoroughfare],[placemark locality], [placemark
administrativeArea]];

NSLog(@"%@",address);
}

}];

return address;
}

有人知道如何解决这个问题吗?谢谢!

最佳答案

CLGeocoder 方法 reverseGeocodeLocation:completionHandler:异步运行。这意味着您无法从 getAddressFromLocation: 返回地址,因为从该方法返回时根本没有设置地址。

本地理编码器收到地址(或调用导致错误)时,它将运行completionHandler。您必须在完成处理程序中设置或显示地址。

最简单的方法是发送 NSNotification,但这可能不是最好的方法:

-(void)getAddressFromLocation:(CLLocation *)location {
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
{
if (!placemarks) {
// handle error
}

if(placemarks && placemarks.count > 0)
{
CLPlacemark *placemark= [placemarks objectAtIndex:0];
NSString *address = [NSString stringWithFormat:@"%@ %@,%@ %@", [placemark subThoroughfare],[placemark thoroughfare],[placemark locality], [placemark administrativeArea]];

// you have the address.
// do something with it.
[[NSNotificationCenter defaultCenter] postNotificationName:@"MBDidReceiveAddressNotification"
object:self
userInfo:@{ @"address" : address }];
}
}];
}

关于objective-c - verseGeocodeLocation 存储为 NSString 产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com