如何在iOS中从通讯录获取带有电子邮件的联系人?

3

我的应用需要获取通讯录中有电子邮件的联系人的姓名和电子邮件地址,并在表格视图中列出它们。

是否可以创建包含名称和电子邮件字段的用户对象,这些字段由手机的通讯录填充,然后将这些对象放入表格视图中?

任何提示将不胜感激。


请查看此链接,其中还包含CSV文件。https://dev59.com/FlrUa4cB1Zd3GeqPjm3Y - Mike
2个回答

8

你需要遵循的方法是:

首先,你需要获取AddressBook的引用,然后将所有联系人的引用存储在一个数组中。接着,你需要枚举该数组并检查它们的电子邮件属性是否为nil,如果不为nil,则将该联系人添加到另一个数组中,并将该数组用作tableView的数据源 :)

如果需要,我可以提供检查AddressBook中联系人电子邮件输入并过滤这些联系人的代码。

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
    CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);

    for (int i=0;i < nPeople;i++) { 
        NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary];

        ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);

        //For username and surname
        ABMultiValueRef phones =(NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty);
        CFStringRef firstName, lastName;
        firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
        lastName  = ABRecordCopyValue(ref, kABPersonLastNameProperty);
        [dOfPerson setObject:[NSString stringWithFormat:@"%@ %@", firstName, lastName] forKey:@"name"];

        //For Email ids
        ABMutableMultiValueRef eMail  = ABRecordCopyValue(ref, kABPersonEmailProperty);
        if(ABMultiValueGetCount(eMail) > 0) {
            [dOfPerson setObject:(NSString *)ABMultiValueCopyValueAtIndex(eMail, 0) forKey:@"email"];

        }

借助此函数,您可以确定联系人是否有电子邮件地址,如果有,则可以将该联系人引用添加到其他数组中 :) 希望这有所帮助 :)


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接