私は、iOS 5でCLGeocoderオブジェクトを使用してジオコードを転送し、結果のCLLocationをインスタンス変数に入れようとしています。何らかの理由で、インスタンス変数を設定してからゲッターを呼び出すことはできますが、変数はジオコーダーの完了ハンドラーの範囲外でその値を失います。値を保持しないインスタンス変数
私は自分の.hファイルで変数を宣言:
@synthesize specifiedPosition = _specifiedPosition;
をしてから、このようジオコーダを使用しようとした - 最初のNSLogリターンを:私.Mでそれを合成した後
@property (nonatomic, strong) CLLocation *specifiedPosition;
緯度と経度は表示されませんが、2番目の表示はありません:
-(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);
}
私はカスタムセッターも試しましたが、それはh elp:
-(void)setSpecifiedPosition:(CLLocation *)specifiedPosition
{
_specifiedPosition = specifiedPosition;
}
ご協力いただきありがとうございます。
私はそれが正しいと思う - タイムスタンプを見て、それらが順不同であることを明らかにする。ありがとうございました!!! – AlexSBerman
@AlexSBerman喜んで私は助けることができます。問題が解決された場合は、チェックマークをクリックしてこの回答を受け入れてください。 –