我知道,可以有多种价值对于一封电子邮件,但我不知道该如何浏览通过他们。

我可以得到一个人正确。

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

其他提示

这种类型的此项目是一个 ABMultiValue (具体地说,这个字段的类型是一个 kABMultiStringProperty).看看 "使用多值列出了" 对于如何读取这些。看看 地址簿的目标-C常量参考 为什么每个酒店的回报。

此外,请记住,AB功能受到的 创建规则.你是负责释放对象你从一个功能用"复制"。

在的iOS 9 ABFramework已弃用的新联系人框架

我告诉你一个例子来记录一个CNContact的每一个电子邮件地址:

CNContact * yourContact = //...

for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){
    NSLog(@"%@",[emailLabeledValue value]);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top