#swift #contacts
#swift #Контакты
Вопрос:
Я использую контакты Swift и пытаюсь определить, есть ли способ привести 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.
phoneNumbers
СвойствоCNContact
является массивом, а не словарем.2. Хорошо, спасибо, понял. Но есть ли способ определить, как пользователь пометил их?
3. Выполните цикл по списку
CNLabeledValue
экземпляров.label
Свойством является метка.value
Свойство являетсяCNPhoneNumber
.4. Ааааа!!, спасибо …. теперь я понял .
Ответ №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)
}
}
}
}
Комментарии:
1. Спасибо вам огромное… Очень признателен.