【问题标题】:How to retrieve all contacts using CNContact.predicateForContacts?如何使用 CNContact.predicateForContacts 检索所有联系人?
【发布时间】:2016-12-24 01:53:01
【问题描述】:

所以我的这段代码可以正常工作,但前提是您在 predicateForContacts 参数中指定了名称。

func retrieveContactsWithStore(store: CNContactStore) {
    do {
           let predicate = CNContact.predicateForContacts(matchingName: "John")
           let keysToFetch = [CNContactFormatter.descriptorForRequiredKeys(for: .fullName), CNContactPhoneNumbersKey] as [Any]

           let contacts = try store.unifiedContacts(matching: predicate, keysToFetch: keysToFetch as! [CNKeyDescriptor])
           self.objects = contacts
           DispatchQueue.main.async(execute: { () -> Void in
               self.myTableView.reloadData()
           })
       } catch {
           print(error)
       }
}

我想检索地址簿上列出的所有人员的姓名。

【问题讨论】:

标签: swift swift3 cncontact cncontactstore


【解决方案1】:

我想检索地址簿上列出的所有人员的姓名。

形成一个CNContactFetchRequest,指定你想要的键是名字,然后调用enumerateContacts(with:usingBlock:)

    let req = CNContactFetchRequest(keysToFetch: [
        CNContactFamilyNameKey as CNKeyDescriptor,
        CNContactGivenNameKey as CNKeyDescriptor
    ])
    try! CNContactStore().enumerateContacts(with: req) {
        contact, stop in
        print(contact) // in real life, probably populate an array
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2015-01-31
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多