如何在iOS中通过AddressBook与电子邮件联系?

dea*_*ter 3 iphone objective-c uitableview abaddressbook ios

在我的应用程序我想手机通讯录谁已经电子邮件然后列出他们在的tableview的姓名和电子邮件.

是否可以创建具有名称和电子邮件字段的用户对象,这些字段由电话的地址簿填充,然后将这些对象放在tableview中?

任何线索将不胜感激.

Raj*_*ana 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"];

        }
Run Code Online (Sandbox Code Playgroud)

在你的帮助下你会知道,联系人是否有电子邮件,如果有,那么你可以将该联系人参考添加到其他阵列:)希望它有所帮助:)