【问题标题】:IOS - CNContactPickerViewController should display only the names that has an email?IOS - CNContactPickerViewController 应该只显示有电子邮件的名称?
【发布时间】:2017-07-15 07:59:27
【问题描述】:

我只想从移动联系人那里获取姓名和电子邮件并打印出来。我正在使用以下代码来执行此任务。

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)

        }
    }

它打印我在 CNContactPickerViewController 中选择的名称和电子邮件,即使所选名称没有电子邮件,它也只打印名称。 现在,我想要的是,我不想在 CNContactPickerViewController 中显示没有电子邮件的名称。仅应显示存储了电子邮件的名称。我该怎么做?

使用 Xcode 8.2、Swift 3、IOS 10

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

【问题讨论】:

    标签: ios swift email contacts


    【解决方案1】:

    您是否尝试向 CNContactPickerViewController 添加谓词? documentation 似乎完全符合您的要求。

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

    contactPicker.predicateForEnablingContact = NSPredicate(format: "emailAddresses.@count > 0")
    

    【讨论】:

    • 联系人仍然显示,只是变灰。
    • 是否有可能显示有电子邮件的联系人??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2011-04-22
    • 1970-01-01
    • 2015-07-31
    • 2019-06-28
    • 2014-05-03
    • 2011-04-08
    相关资源
    最近更新 更多