web-dev-qa-db-ja.com

MKPlacemarkのaddressDictionaryを作成するにはどうすればよいですか?

    placemark = [[MKPlacemark alloc]initWithCoordinate:storedCoordinate addressDictionary:addressDict];

上記のコードに使用する辞書を作成しようとしましたが、何も機能しません:(

    NSDictionary *addressDict = [[NSDictionary alloc] initWithObjectsAndKeys:
    location.countryCode, @"CountryCode",
    location.country,@"kABPersonAddressCountryKey", 
    location.state, kABPersonAddressStateKey, 
    location.city, @"City",
    location.street, kABPersonAddressStreetKey,
    location.Zip, kABPersonAddressZIPKey,
    nil];
30
Shmidt

MKPlacemarkのaddressDictionaryを作成するときは、ABPerson内で定義されている「AddressProperty」定数を使用することをお勧めします。これらの定数はCFStringRef型であるため、NSDictionary内でキーとして使用するには、(NSString *)にキャストする必要があることに注意してください。

NSDictionary *addressDict = @{
                              (NSString *) kABPersonAddressStreetKey : location.street,
                              (NSString *) kABPersonAddressCityKey : location.city,
                              (NSString *) kABPersonAddressStateKey : location.state,
                              (NSString *) kABPersonAddressZIPKey : location.Zip,
                              (NSString *) kABPersonAddressCountryKey : location.country,
                              (NSString *) kABPersonAddressCountryCodeKey : location.countryCode
                              };

iOS 9以降のアップデート:新しい連絡先フレームワークを使用

NSDictionary *addressDict = @{
                              CNPostalAddressStreetKey : location.street,
                              CNPostalAddressCityKey : location.city,
                              CNPostalAddressStateKey : location.state,
                              CNPostalAddressPostalCodeKey : location.Zip,
                              CNPostalAddressCountryKey : location.country,
                              CNPostalAddressISOCountryCodeKey : location.countryCode
                              };
48
Jay

プロジェクトのビルド設定に「AddressBook.framework」を追加する必要があることに注意してください。また、ヘッダー(.hファイル)にインポートします。

#import <AddressBook/AddressBook.h>

次に、実装(.mファイル)で次を使用できます。

(NSString*)kABPersonAddressStreetKey
(NSString*)kABPersonAddressCityKey
(NSString*)kABPersonAddressStateKey
(NSString*)kABPersonAddressCountryKey
14
David Douglas