2016-10-23 66 views
0

我正在使用Swift Contacts並試圖確定是否有辦法將contacts.phoneNumbers作爲NSDictionary投入使用? 即值可以在contacts.phoneNumbers這種方式來訪問:Swift 3聯繫人

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

當計數由多少個電話號碼的用戶每個聯繫人都輸入確定,但如果我打印contact.phoneNumbers,我得到一個字符串,像這樣:

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

哪裏,因爲它似乎是一個鍵值對,但是如果我嘗試轉換爲NSDictionary爲方便我得到錯誤:

Cannot convert value of type 'CNLabeledValue to expected argument types [AnyHashable : Any]

有什麼想法?

+0

的'CNContact'是一個數組,而不是字典中的'phoneNumbers'財產。 – rmaddy

+0

好的,謝謝。但是有沒有辦法告訴用戶如何標記他們? –

+0

循環遍歷'CNLabeledValue'實例的列表。標籤屬性是標籤。 'value'屬性是'CNPhoneNumber'。 – rmaddy

回答

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) 
       } 
      } 
     } 
    } 
+0

謝謝真棒...非常感謝。 –