IOS - CNContactPickerViewController应该只显示有电子邮件的名称?

Tes*_*ter 5 email contacts ios swift

我只想从移动联系人处获取姓名和电子邮件并打印出来.我正在使用以下代码来完成此任务.

import UIKit
import ContactsUI
class ViewController: UIViewController, CNContactPickerDelegate{

        override func viewDidLoad() {
            super.viewDidLoad()

        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()

        }


        @IBAction func button(_ sender: Any)
        {
            let contactPicker = CNContactPickerViewController()
            contactPicker.delegate = self
            contactPicker.displayedPropertyKeys =
                [CNContactNicknameKey
                  ,CNContactEmailAddressesKey]

            self.present(contactPicker, animated: true, completion: nil)

        }
        func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact)
        {
            if let emailValue : CNLabeledValue = contact.emailAddresses.first
            {
                print(emailValue.value as String)
            }

            print(contact.givenName + " " + contact.familyName)

        }
    }
Run Code Online (Sandbox Code Playgroud)

它打印我在CNContactPickerViewController中选择的名称和电子邮件,即使所选名称没有电子邮件,它也只打印名称.现在,我想要的是,我不想在CNContactPickerViewController中显示没有电子邮件的名称.只应显示包含电子邮件的名称.我怎样才能做到这一点 ?

使用Xcode 8.2,Swift 3,IOS 10

注意:我不想检查电子邮件是否存在,或者是否有效.

小智 6

您是否尝试过向 CNContactPickerViewController 添加谓词?该文档似乎完全符合您正在寻找的要求。

在您的button()方法中,在调用之前添加以下内容present()。

contactPicker.predicateForEnablingContact = NSPredicate(format: "emailAddresses.@count > 0")
Run Code Online (Sandbox Code Playgroud)