匹配CNcontact和Digits Find Friends Swift 3
Matching CNcontact and Digits Find Friends Swift 3
我正在尝试构建 iPhone 带有数字的应用程序 查找朋友功能
我可以从 Digits 中获取匹配列表 digitUserID
。
现在我正在努力匹配 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")
}
以上我已经设法获得所有联系人,但我不知道如何将 phone 号码过滤器传递给它并获得与 CNContact
的精确联系人匹配
理想情况下,人们会期望 CNContactFetchRequest
中的 predicate
来完成这项工作,但那(仍然;啊)只接受用 CNContact
定义的一小部分谓词(例如 CNContact
predicateForContacts(matchingName:)
或 predicateForContacts(withIdentifiers:)
。它甚至不接受基于块的 NSPredicate
。
所以,你必须通过枚举,自己寻找匹配项,例如
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([=10=]).rangeOfCharacter(from: CharacterSet.decimalDigits) != nil })
if phoneNumberDigits == "8885551212" {
self.results.append(contact)
return
}
}
}
} catch let enumerateError {
print(enumerateError.localizedDescription)
}
关于匹配"digit UserID",我不知道那个标识符是什么(是Contacts框架标识符还是Digits自己的标识符?)。
我正在尝试构建 iPhone 带有数字的应用程序 查找朋友功能
我可以从 Digits 中获取匹配列表 digitUserID
。
现在我正在努力匹配 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")
}
以上我已经设法获得所有联系人,但我不知道如何将 phone 号码过滤器传递给它并获得与 CNContact
理想情况下,人们会期望 CNContactFetchRequest
中的 predicate
来完成这项工作,但那(仍然;啊)只接受用 CNContact
定义的一小部分谓词(例如 CNContact
predicateForContacts(matchingName:)
或 predicateForContacts(withIdentifiers:)
。它甚至不接受基于块的 NSPredicate
。
所以,你必须通过枚举,自己寻找匹配项,例如
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([=10=]).rangeOfCharacter(from: CharacterSet.decimalDigits) != nil })
if phoneNumberDigits == "8885551212" {
self.results.append(contact)
return
}
}
}
} catch let enumerateError {
print(enumerateError.localizedDescription)
}
关于匹配"digit UserID",我不知道那个标识符是什么(是Contacts框架标识符还是Digits自己的标识符?)。