Reputation: 16674
placemark = [[MKPlacemark alloc]initWithCoordinate:storedCoordinate addressDictionary:addressDict];
I tried to create dictionary to use for code above, but nothing works :(
NSDictionary *addressDict = [[NSDictionary alloc] initWithObjectsAndKeys:
location.countryCode, @"CountryCode",
location.country,@"kABPersonAddressCountryKey",
location.state, kABPersonAddressStateKey,
location.city, @"City",
location.street, kABPersonAddressStreetKey,
location.zip, kABPersonAddressZIPKey,
nil];
Upvotes: 30
Views: 13700
Reputation: 807
When creating the addressDictionary for the MKPlacemark, it's recommended that you use the "Address Property" constants as defined within ABPerson. Note, since these constants are of type CFStringRef, so you will need to cast them to an (NSString *) in order to use them as keys within the 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
};
Update for iOS 9+: Use new Contacts Framework
NSDictionary *addressDict = @{
CNPostalAddressStreetKey : location.street,
CNPostalAddressCityKey : location.city,
CNPostalAddressStateKey : location.state,
CNPostalAddressPostalCodeKey : location.zip,
CNPostalAddressCountryKey : location.country,
CNPostalAddressISOCountryCodeKey : location.countryCode
};
Upvotes: 48
Reputation: 10503
Worth noting that you will need to add the 'AddressBook.framework' to your project build settings. Also import in your header (.h file):
#import <AddressBook/AddressBook.h>
Then in your implementation (.m file) you can use:
(NSString*)kABPersonAddressStreetKey
(NSString*)kABPersonAddressCityKey
(NSString*)kABPersonAddressStateKey
(NSString*)kABPersonAddressCountryKey
Upvotes: 14