简体   繁体   中英

Why am I getting this linker error in iOS when I create location strings from longitude and latitude?

I have the longitude and latitude from a location manager, now I am trying to reverse geo-code, to convert that information into address strings. I found the code below, that purportedly will do it, but I am getting a linker error. I think this means I am missing some framework or something. I was not able to find the answer. Can anyone help?

Error:

Apple Mach-O Linker Error
"_KABPersonAddressZIPKey", referenced from:

and so on for each of the strings that I am trying to generate.

 CLGeocoder *geocoder = [[CLGeocoder alloc] init];
 CLLocation *newLocation = [[CLLocation alloc]initWithLatitude:latitude
                                                        longitude:longitude];
            [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error)

            {  
                       if (error) {
                           NSLog(@"Geocode failed with error: %@", error);
                           return;
                       }

                       if (placemarks && placemarks.count > 0)
                       {
                           CLPlacemark *placemark = placemarks[0];

                           NSDictionary *addressDictionary = placemark.addressDictionary;

                           NSString *address = [addressDictionary objectForKey:(NSString *)kABPersonAddressStreetKey];
                           NSString *city = [addressDictionary objectForKey:(NSString *)kABPersonAddressCityKey];
                           NSString *state = [addressDictionary objectForKey:(NSString *)kABPersonAddressStateKey];
                           NSString *zip = [addressDictionary  objectForKey:(NSString *)kABPersonAddressZIPKey];

                           NSLog(@"%@ %@ %@ %@", address,city, state, zip);

                       }
            }
    ];

Look up kABPersonAddressStreetKey in the documentation:

http://developer.apple.com/library/ios/#documentation/AddressBook/Reference/ABPersonRef_iPhoneOS/Reference/reference.html

It says right at the top it's in the AddressBook framework. So you need to link to that.

Add the following Framework to your Project, and Import it.

AddressBook.framework
AddressBookUI.framework

在此输入图像描述

The code you posted is using some constants from the AddressBook framework. You need to add the AddressBook framework to your project target.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM