0
我試圖在iOS 5中使用CLGeocoder對象將地址轉換爲地址,並將結果CLLocation放入實例變量中。出於某種原因,我可以設置實例變量,然後調用它的getter,但是該變量的值超出了Geocoder完成處理程序的範圍。實例變量不保留值
我宣佈我的.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);
}
我也嘗試了定製的setter,但這不是H elp:
-(void)setSpecifiedPosition:(CLLocation *)specifiedPosition
{
_specifiedPosition = specifiedPosition;
}
在此先感謝您的幫助!
我認爲這是正確的 - 看看時間戳顯示它們失靈。謝謝!!! – AlexSBerman 2012-02-26 23:44:06
@AlexSBerman很高興能幫到你。如果事實證明解決了您的問題,請單擊複選標記以接受此答案。 – 2012-02-26 23:45:32