2011-03-18 121 views
4

我想获得所有具有电话号码并且只有这些联系人的AB联系人列表。只有我不想展示的电子邮件的任何联系人。iPhone地址簿:如何获取电话号码的联系人列表?

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? 

回答

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 
    } 
} 
2

有没有简单的方法或者像这样的iOS帮助,你必须分析你的阵列,如果你正在分析的人有一个电话号码或手机号码清单不空你将它添加到你的最终阵列。

+0

感谢。怎么样使用NSPredicate?会像[NSPredicate predicateWithFormat:@“phonenumbers包含[cd]%@”,number];工作? – mymmaster 2011-03-18 17:41:03

+0

ABAddressBook对象不是NSEntityDescription对象,所以我不认为你可以对它们执行请求。 – 2011-03-21 08:29:20

相关问题