shobylogy

叩けシンプルの杖

CLGeocoderを使って郵便番号を住所に変換する

住所入力をさせる際に、郵便番号から住所を補完したいことはよくあると思いますが、アプリでそれを実装しようと思うと少し面倒です。

しかし、iOSだけであれば、CLGeocoderを使うと、自前で郵便番号変換用のAPIを作らなくても済みます。 また、現在地を取得するわけではないので、位置情報の利用許可を求めるアラートも出ません。

import <CoreLocation/CoreLocation.h>

NSString *zipCode = @"1000001"
NSString *zipCodeWithPostalMark = [NSString stringWithFormat:@"〒%@", zipCode];

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:zipCodeWithPostalMark completionHandler:^(NSArray *placemarks, NSError *error) {
    CLPlacemark *placemark = placemarks.firstObject;

    NSString *prefecture = placemark.administrativeArea;
    NSString *city = placemark.locality;
    NSString *street = placemark.subLocality;
}];

1000001という7桁の数値形式は郵便番号として正しく認識してくれないことがあるため、郵便記号をつけています。

住所入力機能があるアプリを作っている方は、おもてなし機能として補完をつけてみてはいかがでしょうか。