Адресная книга iPhone: Как получить список только контактов с номерами телефонов? - PullRequest
4 голосов
/ 18 марта 2011

Я хотел бы получить список всех ABContacts, которые имеют номер телефона и только эти контакты.Любые контакты только с электронной почтой, которые я не хочу показывать.

В Android есть поле HAS_PHNONE_NUMBER, к которому вы можете обратиться, но я не вижу ничего подобного для iPhone.

Например:

ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
//How do I filter people into an array of contacts that all have a phone number?

Ответы [ 2 ]

8 голосов
/ 29 апреля 2011

Вы можете использовать этот фрагмент кода

CFIndex numberOfPeople = CFArrayGetCount(_allPeople);
for (int i=0;i < numberOfPeople;++i) { 
    ABRecordRef ref = CFArrayGetValueAtIndex(_allPeople, i);
    ABMultiValueRef phones =(NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty);
    int phoneNumbersCount = ABMultiValueGetCount(phones);
    if (phoneNumbersCount>0)
    {
       // save this contact, it has phone number
    }
}
2 голосов
/ 18 марта 2011

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

...