我正在尝试使用 CLGeocoder 对象转发 iOS 5 中的地址,并将生成的 CLLocation 放入实例变量中。出于某种原因,我可以设置实例变量,然后调用它的 getter,但该变量会在地理编码器的完成处理程序范围之外丢失其值。
我在 .h 文件中声明了变量:
@property (nonatomic, strong) CLLocation *specifiedPosition;
然后在我的.m中合成它:
@synthesize specifiedPosition = _specifiedPosition;
然后尝试像这样使用地理编码器 - 第一个 NSLog 返回纬度和经度,而第二个不返回:
-(void)getLatLong:(NSString *)locationText
{
if (!self.geocoder)
{
self.geocoder = [[CLGeocoder alloc] init];
}
[self.geocoder geocodeAddressString:locationText completionHandler:^(NSArray *placemarks, NSError *error){
if ( ([placemarks count] > 0) && (error == nil)) {
self.specifiedPosition = [[placemarks objectAtIndex:0] location];
NSLog(@"Specified Location variable is set to: %@", self.specifiedPosition);
} else if (error == nil && [placemarks count] == 0){
// TODO
NSLog(@"Can't find data on the specificed location");
}
else if (error != nil){
// TODO
NSLog(@"An error occurred = %@", error);
}
}];
NSLog(@"Specified Location variable is set to: %@", self.specifiedPosition);
}
我也尝试了一个自定义设置器,但这没有帮助:
-(void)setSpecifiedPosition:(CLLocation *)specifiedPosition
{
_specifiedPosition = specifiedPosition;
}
在此先感谢您的帮助!