匹配CNcontact和Digits Find Friends Swift 3
我正在尝试构建一个iPhone应用程序,其中包含“数字找朋友”功能 我可以从数字中获取匹配的匹配CNcontact和Digits Find Friends Swift 3,swift,cncontact,twitter-digits,Swift,Cncontact,Twitter Digits,我正在尝试构建一个iPhone应用程序,其中包含“数字找朋友”功能 我可以从数字中获取匹配的digitserid列表 现在我正在努力匹配UserID和CNContacts 请举例说明 更新如下: do { try contactStore.enumerateContactsWithFetchRequest(CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey, CNContactFamilyNameKey, CNContac
digitserid
列表
现在我正在努力匹配UserID
和CNContacts
请举例说明
更新如下:
do
{
try contactStore.enumerateContactsWithFetchRequest(CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactMiddleNameKey, CNContactEmailAddressesKey,CNContactPhoneNumbersKey])) {
(contact, cursor) -> Void in
self.results.append(contact)
}
}
catch{
print("Handle the error please")
}
以上我已经设法获得了所有联系人,但我不知道如何将电话号码筛选器传递到该联系人中,并获得与
CNContact
的准确联系人匹配理想情况下,人们会期望CNContactFetchRequest
的谓词执行该工作,但(仍然;argh)仅接受使用CNContact
定义的谓词的狭窄列表(例如CNContact
predicateForContacts(匹配名称:)
或predicateForContacts(带标识符:)
。它甚至不接受基于块的redInspate
因此,您必须枚举,自己查找匹配项,例如
let request = CNContactFetchRequest(keysToFetch: [
CNContactGivenNameKey as CNKeyDescriptor,
CNContactFamilyNameKey as CNKeyDescriptor,
CNContactMiddleNameKey as CNKeyDescriptor,
CNContactEmailAddressesKey as CNKeyDescriptor,
CNContactPhoneNumbersKey as CNKeyDescriptor
])
do {
try contactStore.enumerateContacts(with: request) { contact, stop in
for phone in contact.phoneNumbers {
// look at `phone.value.stringValue`, e.g.
let phoneNumberDigits = String(phone.value.stringValue.characters.filter { String($0).rangeOfCharacter(from: CharacterSet.decimalDigits) != nil })
if phoneNumberDigits == "8885551212" {
self.results.append(contact)
return
}
}
}
} catch let enumerateError {
print(enumerateError.localizedDescription)
}
关于匹配“digit UserID”,我不知道该标识符是什么(是联系人框架标识符还是Digits自己的标识符?)。哦,这是我自己的标识符。是否可以修改答案以包含搜索字符串(姓名、电话、电子邮件)如果没有,你能给我指出另一个解决方案吗。Thanks@DavidDelMonte-当然可以。如果是简单的搜索,您可以提供。但我认为这不会在电话号码内搜索,因此您可能必须在for
循环中添加If
语句,在您想要的任何字段中检查搜索的字符串。请参阅。