2015-06-04 151 views
1

我与iOS通讯录框架的测试,我试图找出什么ABMultiValueCopyLabelAtIndex(),什么是提取特定标签值的最佳方式,并在同一时间想,如果这些标签的顺序任何随机原因改变。什么是标签顺序

这是当我添加新联系人或添加到现有的我在做什么:在委托调用

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 

请注意,我假设的主要标签是在指数。我知道,与CFString字符串标签的比较是可能的,但这些标签看起来很有趣,给我这个奇怪的直觉比较agains他们的时候。所以,我不太清楚如何去做这件事。

回答

1

你不应该承担任何顺序。您必须阅读标签的价值。他们“看起来很有趣”,但他们很容易处理:他们的形式是"_$!<Label>!$_",其中"_$!<"">!$_"只是您可以依赖的分隔符。

+0

还要注意,没有“主标签”的概念。用户可以在任何顺序对这些电话号码:你无法知道哪个电话号码被认为是“主”,如果任何的方式。 – matt

+0

好的,谢谢@matt指出这一点。我想从某人的经历中了解这一点:) –

+0

顺便说一句,直到现在我都没有注意到这一点,但我是你书中的忠实粉丝!感谢您为此付出了如此惊人的努力。 –