如何使用 CNContact.predicateForContacts 检索所有联系人?
How to retrieve all contacts using CNContact.predicateForContacts?
所以我有这段代码可以正常工作,但前提是您在 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)
}
}
我想检索地址簿中列出的所有人员的姓名。
I'd like to retrieve all the names of the people listed on address book.
形成一个CNContactFetchRequest specifying that the keys you want are names, and call 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
}
所以我有这段代码可以正常工作,但前提是您在 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)
}
}
我想检索地址簿中列出的所有人员的姓名。
I'd like to retrieve all the names of the people listed on address book.
形成一个CNContactFetchRequest specifying that the keys you want are names, and call 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
}