iPhone地址簿:如何获取仅包含电话号码的联系人列表?

mym*_*ter 4 iphone filter contacts addressbook

我想获得所有ABContacts的列表,这些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?
Run Code Online (Sandbox Code Playgroud)

Ale*_*hyn 8

您可以使用此代码段

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
    }
}
Run Code Online (Sandbox Code Playgroud)