ABMultiValueCopyLabelAtIndex() 中的标签顺序是什么

What is the labels order in ABMultiValueCopyLabelAtIndex()

我正在使用 iOS AddressBook 框架进行测试,我正在尝试弄清楚在特定标签处提取值的最佳方法是什么,同时想知道这些标签的顺序是否会发生变化,因为任何随机原因。

这是我在添加新联系人或添加到现有联系人时正在做的事情:

 let phone:ABMutableMultiValue = ABMultiValueCreateMutable(
        ABPropertyType(kABStringPropertyType)).takeRetainedValue()
 ABMultiValueAddValueAndLabel(phone, phoneNumber, kABPersonPhoneMainLabel, nil) 

稍后在对 unknownPersonViewController() 的委托调用中,我正在这样做:

let phone: ABMultiValueRef = ABRecordCopyValue(person,
                kABPersonPhoneProperty).takeRetainedValue()
firstPhone = ABMultiValueCopyValueAtIndex(phone, 0).takeRetainedValue() as! String

请注意,我假设主标签位于索引 0。我知道可以与 CFString 标签进行比较,但这些标签看起来很有趣,让我在再次比较它们时有一种奇怪的直觉。所以,我真的不知道该怎么做。

您不应该承担任何订单。你必须阅读标签的价值。它们确实 "look funny" 但它们很容易处理:它们的形式是 "_$!<Label>!$_",其中 "_$!<"">!$_" 只是您可以依赖的分隔符。