CNContactPickerViewController 仅检索选定的项目
CNContactPickerViewController Retrieve ONLY Selected Item
委托方法实现时:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty)
用户可以select 列表中的联系人,然后会自动显示联系人详细信息。 select 从联系人指定的字段中,CNContactPickerViewController
消失。
问题是,如果有两个 phone 号码,并且用户明确 select 其中一个号码,则返回的 CNContactProperty
包括两个 phone 号码.
如何只提取用户点击的号码?
示例代码:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
contactProperty.contact.phoneNumbers //the numbers are an array so I am not able to see which one the user selected
}
您的问题是您忽略了所选 属性。您正在直接访问联系人的所有 phone 号码。使用 contactProperty
参数,它只选择了一个 属性.
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
// See if the user selected a phone number
if let phone = contactProperty.value as? CNPhoneNumber {
let number = phone.stringValue
}
}
如果您只想处理选定的 phone 数字,以上内容很好。如果你想处理几种不同的 属性 类型,像下面这样的东西可能更好:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
switch contactProperty.key {
case CNContactPhoneNumbersKey:
if let phone = contactProperty.value as? CNPhoneNumber {
let number = phone.stringValue
// do something
}
// case ...: // some other type
default:
break
}
}
委托方法实现时:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty)
用户可以select 列表中的联系人,然后会自动显示联系人详细信息。 select 从联系人指定的字段中,CNContactPickerViewController
消失。
问题是,如果有两个 phone 号码,并且用户明确 select 其中一个号码,则返回的 CNContactProperty
包括两个 phone 号码.
如何只提取用户点击的号码?
示例代码:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
contactProperty.contact.phoneNumbers //the numbers are an array so I am not able to see which one the user selected
}
您的问题是您忽略了所选 属性。您正在直接访问联系人的所有 phone 号码。使用 contactProperty
参数,它只选择了一个 属性.
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
// See if the user selected a phone number
if let phone = contactProperty.value as? CNPhoneNumber {
let number = phone.stringValue
}
}
如果您只想处理选定的 phone 数字,以上内容很好。如果你想处理几种不同的 属性 类型,像下面这样的东西可能更好:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty) {
switch contactProperty.key {
case CNContactPhoneNumbersKey:
if let phone = contactProperty.value as? CNPhoneNumber {
let number = phone.stringValue
// do something
}
// case ...: // some other type
default:
break
}
}