These are the fixes for your code.
NSString *theEmailAddressWeWantToObtain = @""; ABPerson *aPerson = [[ABAddressBook sharedAddressBook] me]; ABMultiValueRef *emails = [aPerson valueForProperty:kABEmailProperty];
I am not very familiar with the encoding of key values, so I'm not sure about your methods related to this.
So I would do it
The ABMultiValueRef
contains three email addresses: home, work, and other emails. Try this code to get your home email address:
NSString *email; ABRecordRef currentPerson = (__bridge ABRecordRef)[[PSAddressBook arrayOfContacts] objectAtIndex:identifier]; ABMultiValueRef emailsMultiValueRef = ABRecordCopyValue(currentPerson, kABPersonEmailProperty); NSUInteger emailsCount; //Goes through the emails to check which one is the home email for(emailsCount = 0; emailsCount <= ABMultiValueGetCount(emailsMultiValueRef);emailsCount++){ NSString *emailLabel = (__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex (emailsMultiValueRef, emailsCount); if([emailLabel isEqualToString:@"Home"]){ if ((__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(emailsMultiValueRef, emailsCount) != NULL){ email = (__bridge_transfer NSString *)ABRecordCopyValue(currentPerson, kABPersonEmailProperty); } //If the last name property does not exist else{ email = @"NULL"; } } } CFRelease(emailsMultiValueRef);
If you have any questions about the code, just ask in the comments. Hope this helps!
EDIT:
The PSAddressBook
class mentioned in the code can be found here: https://github.com/pasawaya/PSAddressBook
source share