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

前端之家收集整理的这篇文章主要介绍了Swift iOS9新联系人框架 – 如何仅检索具有有效电子邮件地址的CNContact?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在最新的iOS9联系人框架中,如何仅检索具有有效电子邮件地址的CNContact?

当前代码

  1. func getContacts() -> [CNContact] {
  2. let contactStore = CNContactStore()
  3. let predicate: NSPredicate = NSPredicate(format: "")
  4. let keysToFetch = [CNContactGivenNameKey,CNContactFamilyNameKey,CNContactEmailAddressesKey]
  5.  
  6. do {
  7. return try contactStore.unifiedContactsMatchingPredicate(predicate,keysToFetch: keysToFetch)
  8. } catch {
  9. return []
  10. }
  11. }
目前(iOS 9.0)似乎没有谓词( see CNContact Predicates)可用于通过电子邮件地址过滤联系人!

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

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

  1. let contactStore = CNContactStore()
  2. fetchRequest.unifyResults = true //True should be the default option
  3. do {
  4. try contactStore.enumerateContactsWithFetchRequest(CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey,CNContactEmailAddressesKey])) {
  5. (contact,cursor) -> Void in
  6. if (!contact.emailAddresses.isEmpty){
  7. //Add to your array
  8. }
  9. }
  10. }
  11. catch{
  12. print("Handle the error please")
  13. }

猜你在找的Swift相关文章