联系人有多封邮件时CNContactPickerViewController

时间:2018-06-04 14:49:50

标签: swift cncontactpicker

我使用CNContactPickerViewController让用户选择他/她的某个联系人的电子邮件

sort

当联系人只有一封邮件时,一切顺利

sort(do.call(`c`, dataset[c(1, 3, 5)]))

但有时其中一个联系人有多个邮件,我怎么能让用户选择其中一个呢?

2 个答案:

答案 0 :(得分:2)

好的,通过反复试验找到了解决方案......

我正在实施两个:

func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
    if let _mail = contactProperty.value as? String {
        self.personWasSelected(with: _mail)
    }
}

func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {

    if let _mail = contact.emailAddresses.first?.value as String? {
        self.personWasSelected(with: _mail)
    }
}

但只有第一个应该实施

答案 1 :(得分:1)

要让用户选择要选择的电子邮件地址,请设置

picker.predicateForEnablingContact = NSPredicate(format: "emailAddresses.@count > 0")
picker.predicateForSelectionOfContact = NSPredicate(format: "emailAddresses.@count == 1")

这样,对于只有一封电子邮件的用户

contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact)

被呼叫,但是对于具有一封以上电子邮件的用户,将显示联系人详细信息并将所选电子邮件传递给

contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty)

请注意,CNContactProperty也具有.contact属性。