2013-05-28 3 views
3

В моем приложении я хочу получить имена и электронные письма от контактов телефона, у которых есть электронные письма, а затем перечислить их в виде таблицы.Как получить контакты с Email из адресной книги в iOS?

Возможно ли создать объекты пользователя с полями имени и электронной почты, которые заполняются адресной книгой телефона, а затем помещать их в таблицу?

Любая подсказка будет оценена по достоинству.

+0

Проверить эту ссылку, также содержит файл CSV http://stackoverflow.com/questions/7118772/how-to-get-contacts- подробно-of-iphone-and-make-csv-file-of-the-contact – mindfreak

ответ

8

подход вам необходимо выполнить следующие действия:

Прежде всего, необходимо получить ссылку в AddressBook, а затем получить все ссылки контактов в массиве. И тогда вам нужно перечислить массив и проверить, является ли его свойство электронной почты нулевым, если не нулем, добавить этот контакт в другой массив, а затем использовать этот массив в качестве источника данных для 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"]; 

     } 

С помощью вам будет узнать, есть ли контакт по электронной почте или нет, если да, то вы можете добавить, что контактную ссылку на другой массив :) Надеюсь, что это помогает :)

+0

спасибо, да пример будет замечательным :) – death7eater

+0

@ death7eater обновил ответ :) –

+0

Здравствуйте @RajanBalana, это не работает в ios 8 – Ranjit

0

Вы можете перейти по этой ссылке - http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Introduction.html

Класс ABAddressBook позволяет получить доступ к данным адресной книги. И вы можете создать свой собственный пользовательский объект.

kABPersonEmailProperty позволяет получить свойство Пенсакола в ABPerson

Смежные вопросы