как отобразить несколько контактов одного пользователя Swift 3

Я получаю информацию о пользователе, такую ​​​​как его имя, номер телефона и идентификатор электронной почты, из контактов. Но он показывает только первый контактный номер. ЕСЛИ у человека есть более одного контактного номера, второй номер не отображается. Может ли кто-нибудь помочь? Я использую эта функция, где EVContactProtocol является частью библиотеки

    func didChooseContacts(_ contacts: [EVContactProtocol]?) {
    var conlist : String = ""
    if let cons = contacts {
        for con in cons {

            if let fullname = con.fullname(),let email1 = con.email , let phoneNumber = con.phone {
                conlist += fullname + "\n"
                print("Full Name: ",fullname)
                print("Email: ",email1)
                print("Phone Number: ",phoneNumber)

            }


        }
        self.textView?.text = conlist
    } else {
        print("I got nothing")
    }
    let _ = self.navigationController?.popViewController(animated: true)

}

person Community    schedule 05.05.2017    source источник


Ответы (1)


Вы должны попробовать это:

import Contacts

class ViewController: UIViewController
{
    lazy var contacts: [CNContact] =
    {
        let contactStore = CNContactStore()
        let keysToFetch = [
            CNContactFormatter.descriptorForRequiredKeys(for: .fullName),
            CNContactEmailAddressesKey,
            CNContactPhoneNumbersKey] as [Any]

        // Get all the containers
        var allContainers: [CNContainer] = []
        do 
        {
            allContainers = try contactStore.containers(matching: nil)
        }
        catch 
        {
            print("Error fetching containers")
        }

        var results: [CNContact] = []

       // Iterate all containers and append their contacts to our results array
        for container in allContainers 
        {
            let fetchPredicate = CNContact.predicateForContactsInContainer(withIdentifier: container.identifier)

            do 
            {
                let containerResults = try contactStore.unifiedContacts(matching: fetchPredicate, keysToFetch: keysToFetch as! [CNKeyDescriptor])
                results.append(contentsOf: containerResults)
            } 
            catch 
            {
                print("Error fetching results for container")
            }
        }

    return results
    }()

    override func viewDidLoad()
    {
        super.viewDidLoad()
        print(contacts[0].givenName)
        print(contacts[0].phoneNumbers)
        print(contacts[0].emailAddresses)
        print(contacts)
    }
}
person Pragnesh Vitthani    schedule 05.05.2017