加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift iOS9新联系人框架 – 如何仅检索具有有效电子邮件地址的CN

发布时间:2020-12-14 05:45:01 所属栏目:百科 来源:网络整理
导读:在最新的iOS9联系人框架中,如何仅检索具有有效电子邮件地址的CNContact? 当前代码: func getContacts() - [CNContact] { let contactStore = CNContactStore() let predicate: NSPredicate = NSPredicate(format: "") let keysToFetch = [CNContactGivenNa
在最新的iOS9联系人框架中,如何仅检索具有有效电子邮件地址的CNContact?

当前代码:

func getContacts() -> [CNContact] {
    let contactStore = CNContactStore()
    let predicate: NSPredicate = NSPredicate(format: "")
    let keysToFetch = [CNContactGivenNameKey,CNContactFamilyNameKey,CNContactEmailAddressesKey]

    do {
        return try contactStore.unifiedContactsMatchingPredicate(predicate,keysToFetch: keysToFetch)
    } catch {
        return []
    }
}
目前(iOS 9.0)似乎没有谓词( see CNContact Predicates)可用于通过电子邮件地址过滤联系人!

您不能编写自定义谓词来过滤联系人,正如文档所说:
“请注意,Contacts框架不支持通用谓词和复合谓词”

但是当然你可以“手动”完成它,我给你看一个使用快速枚举的例子:

let contactStore = CNContactStore()
fetchRequest.unifyResults = true //True should be the default option
do {
    try contactStore.enumerateContactsWithFetchRequest(CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey,CNContactEmailAddressesKey])) {
        (contact,cursor) -> Void in
        if (!contact.emailAddresses.isEmpty){
            //Add to your array
        }
    }
}
catch{
    print("Handle the error please")
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读