2009-10-29 41 views
5

我知道电子邮件可以有多个值,但我不确定如何浏览它们。如何获取iPhone通讯录联系人的电子邮件为NSStrings?

我可以正确地找人。

ABRecordRef person = // getting a person; 
NSString* emails = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty); 

...接下来是什么?如果我尝试打印emails可变我得到:

Emails: <NSCFType: 0x4018d40> 

回答

16

这是因为电子邮件不应该是一个字符串,而是一个数组。人们可以有很多电子邮件!

ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); 
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, <INDEX>); 
NSLog((NSString *) email); 

Here是对一些事情的文档,你可以用MultiValueLists

+0

谢谢!你知道如何获得“电子邮件”数组的大小,以便我可以浏览它吗? – marcgg

+0

我添加了一个链接到文档,你会发现'count'方法 – coneybeare

+0

为最终使用这个计数:CFIndex count = ABMultiValueGetCount(emails); – marcgg

1

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

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

CNContact * yourContact = //... 

for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){ 
    NSLog(@"%@",[emailLabeledValue value]); 
} 
相关问题