Swift 3通讯录

时间:2016-10-23 13:10:50

标签: swift contacts

我正在使用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 个答案:

答案 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)
                }
            }
        }
    }