如何从[CNContact]中获取拨号代码和[CNContact]中的预选值

问题描述

我正在使用sharedlib.so框架来获取所有联系人。

单击按钮时,我打开了联系人。

main.c

对于单项和多项选择,我使用以下两种方法

ContactsUI

现在,用户将选择多个联系人,然后使用以下代码将这些联系人添加到数组中。

dispatchQueue.main.async {
            // 1
            let contactPicker = CNContactPickerViewController()
            contactPicker.delegate = self
            // 2
            contactPicker.predicateForEnablingContact = nspredicate(format: "emailAddresses.@count > 0")
            self.present(contactPicker,animated: true)
            // This is the method we will create
        }

我有两个问题。

1。。无论如何,当用户再次选择联系人时,认情况下,这些联系人将在func contactPicker(picker: CNContactPickerViewController,didSelectContacts contacts: [CNContact]) { } func contactPicker(_ picker: CNContactPickerViewController,didSelect contacts: [CNContact]) { } 中选择。因此用户将从重复的联系人中保存。

2 我要保存联系人的拨号代码。例如“ +91”。

但是,下面的代码仅返回国家代码

func contactPicker(_ picker: CNContactPickerViewController,didSelect contacts: [CNContact]) {
        
        for item in contacts {
            
            let firstName = item.givenname
            let lastName = item.familyName
            
            if let contactPhone = item.phoneNumbers.first {
                let countryCode = contactPhone.value.value(forKey: "countryCode") as? String
                let contactnumber = contactPhone.value.value(forKey: "digits") as? String
                
                contactArray.append(["first_name": firstName,"last_name":lastName,"contact_number":contactnumber,"country_code":countryCode ?? ""])
            }
        }
 }

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)