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