I know that there can be multiple values for an email, but I'm not sure how to browse through them.
I can get a person correctly.
ABRecordRef person = // getting a person;
NSString* emails = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty);
... what's next? If I try to print the emails
variable I get:
Emails: <NSCFType: 0x4018d40>
It is because emails should not be a string, but an array. People can have many emails!
ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, <INDEX>);
NSLog( (NSString *) email);
Here are some docs on things you can do with MultiValueLists
The type of this entry is an ABMultiValue
(specifically, the type of this field is a kABMultiStringProperty
). See "Using Multivalue Lists" for how to read these. See the Address Book Objective-C Constants Reference for what each property returns.
Also, remember that AB functions are subject to the Create Rule. You are responsible for releasing objects you get from a function with the word "Copy" in it.
In iOS 9 the ABFramework has been deprecated for the new Contacts Framework:
I show you an example to log every email address of a CNContact:
CNContact * yourContact = //...
for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){
NSLog(@"%@",[emailLabeledValue value]);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With