我正在尝试在 IOS 联系人存储中提取电话号码的可用标签列表,以便当用户向联系人添加新号码时,他/她可以从该号码的表格列表中选择一个标签。我在检索和编写联系号码方面没有问题,但可用标签的列表却让我望而却步。
我真正想要实现的是提取电话号码的标签数组,如下所示:
var phoneNumbers : [CNLabeledValue<CNPhoneNumber>] = []
但我找不到在哪里提取 phoneNumbers 的值。
我正在尝试在 IOS 联系人存储中提取电话号码的可用标签列表,以便当用户向联系人添加新号码时,他/她可以从该号码的表格列表中选择一个标签。我在检索和编写联系号码方面没有问题,但可用标签的列表却让我望而却步。
我真正想要实现的是提取电话号码的标签数组,如下所示:
var phoneNumbers : [CNLabeledValue<CNPhoneNumber>] = []
但我找不到在哪里提取 phoneNumbers 的值。
Please check this code for CNLabeledValue, its working for me.
for phoneNumber in contact.phoneNumbers {
if let number = phoneNumber.value as? CNPhoneNumber,
let label = phoneNumber.label {
let localizedLabel = CNLabeledValue.localizedStringForLabel(label)
print("\(localizedLabel) \(number.stringValue)")
}
}
最后,我从文档中提取了一个标签常量列表并做了:
let arrLab = [CNLabelPhoneNumberHomeFax, CNLabelPhoneNumberMain,CNLabelPhoneNumberMobile,CNLabelPhoneNumberOtherFax, CNLabelPhoneNumberPager, CNLabelPhoneNumberWorkFax,CNLabelPhoneNumberiPhone,CNLabelOther ]
for bod in arrLab {
let label = CNLabeledValue<NSString>.localizedString(forLabel: bod)
arr1.append(label)
}
不理想,因为如果 Apple 决定添加一个新常量,则该应用程序将需要维护。最好能够直接从设备中提取常量。此外,如果有自定义标签,我的代码会错过这些。