【发布时间】:2019-12-06 12:55:56
【问题描述】:
在花费大量时间进行故障排除、搜索和尝试 StackOverFlow 上的一些答案之后。我无法让它正常工作,我需要能够选择联系人拥有的任何号码,但即使选择家庭/工作号码,我也总是得到CNLabelPhoneNumberMain 或在某些情况下CNLabelPhoneNumberMobile。
长期以来我一直面临这个麻烦,如果有人能指出我的错误,我将不胜感激:
这是我的代码:
@IBAction func addSupporterContactTapped(_ sender: UIButton) {
let contactPicker = CNContactPickerViewController()
contactPicker.displayedPropertyKeys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey]
contactPicker.delegate = self
self.present(contactPicker, animated: true, completion: nil)
}
这就是选择的方式:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
let numbers = contactProperty.contact.phoneNumbers
var phoneNumber: String?
for contact in numbers {
switch contact.label {
case CNLabelHome:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelWork:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelOther:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelPhoneNumberMain:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelPhoneNumberiPhone:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelPhoneNumberMobile:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelPhoneNumberPager:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelPhoneNumberHomeFax:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelPhoneNumberWorkFax:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
case CNLabelPhoneNumberOtherFax:
print("contact.label = \(contact.label ?? "")")
phoneNumber = (contact.value ).stringValue
default:
break
}
}
但无论如何,正如我上面提到的,我从来没有得到正确选择的数字。
如果它可以帮助,选择任意数量时,我将在控制台中打印此操作:
contact.label = _$!<Home>!$_
contact.label = _$!<Mobile>!$_
contact.label = _$!<HomeFAX>!$_
有人可以帮忙吗?
【问题讨论】:
-
你检查
numbers是否包含正确的信息? -
你的
didSelect函数中有索引吗? -
@Koen 是的,我认为数字包含正确的信息,在选择时我得到了错误的数字,如上所述。
-
@Andres 我的 didSelect 函数贴在上面。
-
你的代码没有意义。查看
let numbers = contactProperty.contact.phoneNumbers并不能告诉您用户选择的数字。您的任何代码都不会查看用户选择的内容。
标签: swift cncontact cncontactpicker