用于从IOS联系人存储中提取CNContactLabels的代码

时间:2017-07-20 09:15:37

标签: ios swift cncontactstore

我正在尝试在IOS联系人存储中提取电话号码的可用标签列表,以便当用户向联系人添加新号码时,他/她可以从表格列表中为该号码选择标签。 检索和编写联系号码没有问题,但是可用标签的列表让我望而却步。

我真正想要实现的是提取电话号码的标签数组,如:

var phoneNumbers : [CNLabeledValue<CNPhoneNumber>] = []

但我无法找到为phoneNumbers提取值的位置。

2 个答案:

答案 0 :(得分:0)

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)")
 }
}

答案 1 :(得分:0)

最后,我从文档中提取了一个标签常量列表并执行了:

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决定添加一个新的常量,应用程序将需要维护。能够直接从设备中提取常量会更好。 此外,如果有自定义标签,我的代码会错过这些。