3

在我的应用程序中,我想获取有电子邮件的电话联系人的姓名和电子邮件,然后在表格视图中列出它们。

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

任何线索将不胜感激。

4

2 回答 2

8

您需要遵循的方法是:

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

如果您愿意,我可以为您提供检查地址簿中联系人的电子邮件条目的代码,然后过滤这些联系人。

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"];

        }

在您的帮助下,您将了解联系人是否有电子邮件,如果有,那么您可以将该联系人引用添加到其他数组:) 希望它有所帮助:)

于 2013-05-28T07:43:13.570 回答
0

您可以点击此链接 - http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Introduction.html

ABAddressBook 类允许您访问地址簿数据。您可以为这些创建自己的自定义对象。

kABPersonEmailProperty 允许您获取 ABPerson 的电子邮件属性

于 2013-05-28T07:45:19.363 回答