【问题标题】:iPhone Address Book: How to get a list of only contacts with phone numbers?iPhone通讯录:如何获取仅包含电话号码的联系人列表?
【发布时间】:2011-03-18 13:51:04
【问题描述】:

我想获取所有具有电话号码的 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?

【问题讨论】:

    标签: iphone filter contacts addressbook


    【解决方案1】:

    你可以使用这段代码sn -p

    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 中没有像这样简单的方法或帮助,您必须解析您的数组,如果您正在解析的人有电话号码或电话号码列表不为空,您将其添加到最终数组中。

      【讨论】:

      • 谢谢。使用 NSPredicate 怎么样?会像 [NSPredicate predicateWithFormat:@"phonenumbers contains[cd] %@", number];工作吗?
      • ABAddressBook 对象不是 NSEntityDescription 对象,所以我认为您不能对它们执行请求。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2013-03-19
      • 1970-01-01
      • 2012-12-10
      • 2016-12-26
      • 2013-05-19
      • 1970-01-01
      相关资源
      最近更新 更多