使用联系人框架进行Swift搜索,使用标识符进行匹配
尝试获取提供联系人标识符的联系人匹配失败。我希望返回联系人,然后使用与之关联的图像。我的比分是零。非常感谢。这段代码是我从一个演示中得到的,我对编程有点陌生使用联系人框架进行Swift搜索,使用标识符进行匹配,swift,predicate,cncontact,cncontactstore,Swift,Predicate,Cncontact,Cncontactstore,尝试获取提供联系人标识符的联系人匹配失败。我希望返回联系人,然后使用与之关联的图像。我的比分是零。非常感谢。这段代码是我从一个演示中得到的,我对编程有点陌生 import Contacts var contact = CNContact() var contactStore = CNContactStore() let foundContact = getContactFromID("94AAD3B1-E9E1-48C9-A796-F7EC1014230A") func getCont
import Contacts
var contact = CNContact()
var contactStore = CNContactStore()
let foundContact = getContactFromID("94AAD3B1-E9E1-48C9-A796-F7EC1014230A")
func getContactFromID(contactID: String) -> CNContact {
AppDelegate.getAppDelegate().requestForAccess { (accessGranted) -> Void in
if accessGranted {
let predicate = CNContact.predicateForContactsWithIdentifiers([contactID])
let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey, CNContactPhoneNumbersKey, CNContactImageDataKey, CNContactImageDataAvailableKey]
var contacts = [CNContact]()
var message: String!
let contactsStore = AppDelegate.getAppDelegate().contactStore
do {
contacts = try contactsStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keys)
if contacts.count == 0 {
message = "No contacts were found matching the given name."
}
}
catch {
message = "Unable to fetch contacts."
}
if message != nil {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
Utility.showAlert(nil, message: message)
})
} else {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.contact = contacts[0]
print("self.contact: \(self.contact)")
})
}
}
}
return self.contact
}
我解决了:),我删除了dispatch\u async的东西,现在可以工作了:下面是固定代码
func getContactFromID(contactID: String) -> CNContact {
AppDelegate.getAppDelegate().requestForAccess { (accessGranted) -> Void in
if accessGranted {
let predicate = CNContact.predicateForContactsWithIdentifiers([contactID])
let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey, CNContactPhoneNumbersKey, CNContactImageDataKey, CNContactImageDataAvailableKey]
var contacts = [CNContact]()
var message: String!
let contactsStore = AppDelegate.getAppDelegate().contactStore
do {
contacts = try contactsStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keys)
if contacts.count == 0 {
message = "No contacts were found matching the given name."
}
}
catch {
message = "Unable to fetch contacts."
}
self.contact = contacts[0]
}
}
return self.contact
}
我解决了:),我删除了dispatch_async的东西,现在可以工作了:这里是firat字符的fixed code.serch contact开始..类型代码提供plz。。