我正在使用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]
有什么想法吗?
答案 0 :(得分: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)
}
}
}
}