【问题标题】:Swift 3 Contacts斯威夫特 3 联系人
【发布时间】:2016-10-23 13:10:49
【问题描述】:

我正在使用 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]

有什么想法吗?

【问题讨论】:

  • CNContactphoneNumbers 属性是一个数组,而不是字典。
  • 好的,谢谢。但是有没有办法告诉用户如何标记它们?
  • 循环遍历CNLabeledValue 实例列表。 label 属性是标签。 value 属性是 CNPhoneNumber
  • 啊啊啊啊!!,谢谢....现在我明白了。

标签: swift contacts


【解决方案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)
                }
            }
        }
    }

【讨论】:

  • 谢谢你真棒......非常感谢。
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
相关资源
最近更新 更多