過去 2 時間、CLGeocoder場所のリバース ジオコーディングに使用されるクラス メソッドの実装に苦労していました。
クラス参照Xcodeの下のドキュメントでこのメソッドに提供されているコードは次のとおりです。CLGeocode
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler
私は自分のコードでそれを使用しようとしていましたが、運がありませんでした。だから私はいくつかの古いスタックオーバーフローの質問を見て、最終的に私のために働く実装を見つけました.
これは私のために働くコードです:
-(IBAction)gpsButton {
CLGeocoder *geocoder = [[CLGeocoder alloc]init];
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error){
CLPlacemark *placemark = placemarks[0];
NSLog(@"Found %@", placemark.thoroughfare);
}
];
}
私が理解していないのは、最終的なコードが実際にどのように見える必要があるかではないのに、xcode のドキュメントに (CLLocation *) と (CLGeocodeCompletionHandler) が含まれている理由です。
「場所」オブジェクトは CLLocation クラスのインスタンスである必要があり、「completionHandler」オブジェクトは CLGeocodeCompletionHandler クラスのインスタンスである必要があることを思い出させようとしているだけですか?
このメソッドを実装する前に、メソッドが適切に機能するように、CLLocationクラスとクラスのオブジェクトを作成して初期化する必要があることを思い出させようとしていますか? CLGeocodeCompletionHandlerこの場合、なぜCLLocationxcode の例にポインタがあるのにCLGeocodeCompletionHandlerないのでしょうか?
これが「基本」タイプの質問であることは理解していますが、参考文献をいくつか調べましたが、それらが物事を説明している方法は、この現在の混乱を本当に助けてくれません.
お手伝いありがとう。