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

时间:2011-03-18 13:51:05

标签: iphone filter contacts addressbook

我想获得一个包含电话号码且只有那些联系人的所有ABContact的列表。任何只有我不想展示的电子邮件的联系人。

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 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:2)

在iOS中没有简单的方法或帮助,你必须解析你的数组,如果你正在解析的人有一个电话号码或电话号码列表不是空的你将它添加到你的最终阵列。