Новое для контактов, пытающихся получить номер мобильного телефона. У меня есть адрес электронной почты, но не могу найти мобильный телефон. Это то, что я получил. Часть, отмеченная **
, я ошибаюсь.Как получить номер телефона из рамки «Контакты»
if let oldContact = self.contactItem {
let store = CNContactStore()
do {
let mykeysToFetch = [CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName), CNContactEmailAddressesKey, CNContactPostalAddressesKey,CNContactImageDataKey, CNContactImageDataAvailableKey,CNContactPhoneNumbersKey]
let contact = try store.unifiedContactWithIdentifier(oldContact.identifier, keysToFetch: mykeysToFetch)
dispatch_async(dispatch_get_main_queue(), {() -> Void in
if contact.imageDataAvailable {
if let data = contact.imageData {
self.contactImage.image = UIImage(data: data)
}
}
self.fullName.text = CNContactFormatter().stringFromContact(contact)
self.email.text = contact.emailAddresses.first?.value as? String
self.phoneNumber.text = contact.phoneNumbers.first?.value as? String
**if contact.isKeyAvailable(CNContactPhoneNumbersKey){
if let phoneNum = contact.phoneNumbers.first?.value as? String {
self.phoneNumber.text = phoneNum as String
}
}**
if contact.isKeyAvailable(CNContactPostalAddressesKey) {
if let postalAddress = contact.postalAddresses.first?.value as? CNPostalAddress {
self.address.text = CNPostalAddressFormatter().stringFromPostalAddress(postalAddress)
} else {
self.address.text = "No Address"
}
}
})
} catch {
print(error)
}
}
В чем разница между меткой и CNLabeledValue? –
«CNLabeledValue» - это объект, который состоит из «метки» (например, «домашний», «рабочий», «мобильный» и т. Д., Они обычно кодируются с использованием констант «CNLabelPhoneNumber ...», чтобы максимизировать совместимость с локализацией, хотя они также могут состоять из простых строк) и «value» («CNPhoneNumber» самого номера). См. Https://developer.apple.com/library/ios/documentation/Contacts/Reference/CNLabeledValue_Class/index.html. – Rob
Спасибо за помощь :) –