Ios 如果CNContactPickerViewController中存在多个电话号码,如何显示
在我的应用程序中,我使用Ios 如果CNContactPickerViewController中存在多个电话号码,如何显示,ios,swift,cncontact,cncontactstore,cncontactpicker,Ios,Swift,Cncontact,Cncontactstore,Cncontactpicker,在我的应用程序中,我使用CNContactPickerViewController获取联系人。用户可以选择多个联系人,因此我实现了以下委托方法 func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) { var tempContacts = [Contact]() contacts.forEach { (contact) in
CNContactPickerViewController
获取联系人。用户可以选择多个联系人,因此我实现了以下委托方法
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) {
var tempContacts = [Contact]()
contacts.forEach { (contact) in
if let phoneNumber = contact.phoneNumbers.first {
let contact = Contact(name: "\(contact.givenName) \(contact.familyName)" , phoneNumber: "\(phoneNumber.value.stringValue)")
tempContacts.append(contact)
}
}
selectedContacts = tempContacts
_ = Contact.save(contacts: selectedContacts)
}
func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
print("Cancel contact picker")
}
然而,一些用户抱怨无法查看和选择联系人是否有多个电话号码。是否可以显示具有多个号码的联系人?您只使用联系人的第一个电话号码:
if let phoneNumber = contact.phoneNumbers.first {
let contact = Contact(name: "\(contact.givenName) \(contact.familyName)" , phoneNumber: "\(phoneNumber.value.stringValue)")
tempContacts.append(contact)
}
如果您使用map
方法将所有电话号码映射到一组联系人,该怎么办
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) {
var tempContacts = [Contact]()
contacts.forEach { (contact) in
let contactPhoneNumbers = contact.phoneNumbers.map { Contact(name: "\($0.givenName) \($0.familyName)" , phoneNumber: "\($0.value.stringValue)") }
tempContacts.append(contentsOf: contactPhoneNumbers)
}
selectedContacts = tempContacts
_ = Contact.save(contacts: selectedContacts)
}
我已经想添加多个电话号码,如果它存在的话,但我想在列表中选择时显示用户。