Swift 3 Контакты

Я использую Swift Contacts и пытаюсь определить, есть ли способ разыграть contacts.phoneNumbers как NSDictionary? то есть значения могут быть доступны в contacts.phoneNumbers сюда:

self.officePhone.text = (contact.phoneNumbers[0].value ).value(forKey: "digits")as! String

Где количество определяется количеством телефонных номеров, введенных пользователем для каждого контакта, однако, если я распечатаю contact.phoneNumbersЯ получаю строку примерно так:

label=_$!<Main>!$_, value=<CNPhoneNumber: 0x1452c870: countryCode=us, digits=7323214682>>

Где, как представляется, это пара ключ-значение, однако, если я пытаюсь привести к NSDictionary для легкого доступа я получаю ошибку:

Невозможно преобразовать значение типа 'CNLabeledValue в ожидаемые типы аргументов [AnyHashable: Any]

Какие-нибудь мысли?

1 ответ

Это работает для меня:

    extension ViewController: CNContactPickerDelegate {
        func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
            let phoneNumbers = contact.phoneNumbers
            phoneNumbers.forEach {
                if let digits = $0.value.value(forKey: "digits") {
                    print(digits)
                }
            }
        }
    }
Другие вопросы по тегам