2015-06-04 205 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

順便說一句,直到現在我都沒有注意到這一點,但我是你書中的忠實粉絲!感謝您爲此付出瞭如此驚人的努力。 –