我知道电子邮件可能有多个值,但我不确定如何浏览它们。
我可以正确地找到一个人。
ABRecordRef person = // getting a person;
NSString* emails = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty);
......下一步是什么?如果我尝试打印emails
变量,我会得到:
Emails: <NSCFType: 0x4018d40>
答案 0 :(得分:16)
这是因为电子邮件不应该是字符串,而是数组。人们可以收到很多电子邮件!
ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, <INDEX>);
NSLog( (NSString *) email);
Here是关于您可以使用MultiValueLists
执行的操作的一些文档答案 1 :(得分:4)
此条目的类型为ABMultiValue
(具体而言,此字段的类型为kABMultiStringProperty
)。有关如何阅读这些内容,请参阅"Using Multivalue Lists"。请参阅Address Book Objective-C Constants Reference了解每个属性返回的内容。
另外,请记住AB功能受Create Rule的约束。您负责释放从函数中获得的对象,其中包含“复制”一词。
答案 2 :(得分:1)
在iOS 9中,ABFramework已被弃用于新的 Contacts Framework :
我向您展示了一个记录CNContact的每个电子邮件地址的示例:
CNContact * yourContact = //...
for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){
NSLog(@"%@",[emailLabeledValue value]);
}