0

ユーザーの現在地を取得する際の逆ジオコーディングのソリューションについて、セカンドオピニオンをお願いしたいと思います。

 - (void)reverseGeocodeLocation:(CLLocation *)location
{ 
    CLGeocoder* reverseGeocoder = [[CLGeocoder alloc] init];
    if (reverseGeocoder) {
        [reverseGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
            CLPlacemark* placemark = [placemarks firstObject];
            if (placemark && [placemark count] > 0) {
                 //Using blocks, get zip code
                 NSString *zipCode = [placemark.addressDictionary objectForKey:(NSString*)kABPersonAddressZIPKey];
            }
        }];
    }
    else{
        MKReverseGeocoder* revGeo = [[MKReverseGeocoder alloc] initWithCoordinate:location.coordinate];
        revGeo.delegate = self;//using delegate
        [revGeo start];
        [revGeo release]; 
    }
    [reverseGeocoder release];
}

ただし、少し問題があるようです...次のことを示すEXC_BAD_ACCESSエラーが発生しました。

[reverseGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
            CLPlacemark* placemark = ...
        }];

何が悪かったのか教えていただけますか?EXC_BAD_ACCESSエラーが発生しました。

4

1 に答える 1

1

ブロックに送信されたエラーをチェックしていません。少なくとも1つの目印が返されると想定していますが、何らかの理由で配列が空になっている可能性があります。それは確かにEXC_BAD_ACCESSエラーの原因である可能性があります。

于 2012-03-30T19:36:01.283 に答える