2013-05-28 49 views
3

在我的应用程序中,我想获取电子邮件的电话联系人的姓名和电子邮件,然后在桌面视图中列出它们。如何从iOS中的AddressBook中获取电子邮件的联系人?

是否有可能创建的用户对象的名称和电子邮件字段由手机的地址簿填充,然后把这些对象在tableview?

任何线索将不胜感激。

+0

检查该链接的电子邮件属性,也包含了CSV文件 http://stackoverflow.com/questions/7118772/how-to-get-contacts-详细的iphone和make-csv-file-of-that-c​​ontact – mindfreak

回答

8

你需要遵循的方法是:

首先,你需要获得地址簿的引用,然后得到一个数组的联系人的所有引用。然后你需要枚举数组并检查他们的电子邮件属性是否为零,如果不为零,则将该联系人添加到另一个数组,然后使用该数组作为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

谢谢,是的一个例子将是伟大的:) – death7eater

+0

@ death7eater更新了答案:) –

+0

你好@RajanBalana,这是不工作在ios 8 – Ranjit

相关问题