匹配CNcontact和数字寻找朋友Swift 3

Kav*_*asu 4 swift twitter-digits cncontact

我正在尝试使用数字构建iPhone应用程序查找朋友功能

我可以digitUserID从Digits 获得匹配列表.

现在我正在努力匹配UserIDCNContacts.

请指出任何例子来处理这个问题.

作为更新:

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")
}
Run Code Online (Sandbox Code Playgroud)

以上我设法得到了所有的联系,但我不知道如何通过电话号码过滤器进入这个并获得确切的联系人匹配 CNContact

Rob*_*Rob 10

理想情况下,一个本来期望predicateCNContactFetchRequest做的工作,但(尚;哎呀)只接受定义谓词的窄列表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($0).rangeOfCharacter(from: CharacterSet.decimalDigits) != nil })

            if phoneNumberDigits == "8885551212" {
                self.results.append(contact)
                return
            }
        }
    }
} catch let enumerateError {
    print(enumerateError.localizedDescription)
}
Run Code Online (Sandbox Code Playgroud)

关于匹配"数字用户ID",我不知道该标识符是什么(它是联系人框架标识符还是数字自己的标识符?).