objective-c ios5 mkannotation addressbook

objective c - ¿Cómo crear addressDictionary para MKPlacemark?



objective-c ios5 (2)

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

Intenté crear un diccionario para usar en el código anterior, pero nada funciona :(

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


Al crear el AddressDictionary para MKPlacemark, se recomienda que utilice las constantes de "Propiedad de dirección" tal como se definen en ABPerson. Tenga en cuenta que, como estas constantes son del tipo CFStringRef, tendrá que convertirlas en un (NSString *) para poder usarlas como claves dentro del NSDictionary.

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 };

Actualización para iOS 9+: usar el nuevo marco de contactos

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


Cabe destacar que deberá agregar ''AddressBook.framework'' a la configuración de compilación de su proyecto. También importe en su encabezado (archivo .h):

#import <AddressBook/AddressBook.h>

Luego en su implementación (archivo .m) puede usar:

(NSString*)kABPersonAddressStreetKey (NSString*)kABPersonAddressCityKey (NSString*)kABPersonAddressStateKey (NSString*)kABPersonAddressCountryKey