问题
I am using this code for getting contact number from contacts app but when I want to show the number in label I get this warning and doesn't work: Cast from 'CNPhoneNumber' to unrelated type 'String' always fails
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) {
contacts.forEach {(contact) in
for number in contact.phoneNumbers{
let phone = number.value
print(phone)
numberLabel.text = phone as! String
}
}
}
回答1:
TRY :
if let phone = number.value as? CNPhoneNumber {
print(phone.stringValue)
} else {
print("number.value not of type CNPhoneNumber")
}
also take a look at CNContact , CNPhoneNumber
回答2:
You can get PhoneNumber value as CNLabeledValue
.
for number in contact.phoneNumbers{
if let number = phoneNumber.value as? CNPhoneNumber, let phoneLabel = phoneNumber.label {
let phoneLocalizedLabel = CNLabeledValue.localizedStringForLabel(phoneLabel)
numberLabel.text = "\(phoneLocalizedLabel) : \(number.stringValue)"
}
}
来源:https://stackoverflow.com/questions/50621917/how-to-convert-a-cnphonenumber-to-string-in-swift4