吐槽:iOS要獲得聯繫人所屬分組好麻煩

      最近接觸iOS的AddressBook.framework教多,覺得關於聯繫人這塊的API,如果只是讀取或者簡單的創建,他提供的api還是能滿足需要的。但是,如果你需要做一個類似通訊錄同步的,那麼他的API用起來就稍稍麻煩一點。

      在iOS6以及更低的版本,無法根據一個聯繫人的ABRecordRef獲得他所屬於的分組ABGroupRef,Mac上有提供該API,但iOS上目前暫時沒有。所以,如果要獲取一個聯繫人的分組,你必須遍歷整個通訊錄才能得到該聯繫人所屬的分組列表。故,如果你有對於分組處理的大量需求,建立一個某種程度上的分組緩存基本上是免不了的了。如果你還需要去增刪改分組,我想,使用起來麻煩是少不了的。

      其次,在新增聯繫人的時候,如果你想設置他的分組,調用相應API的時候,請注意查看API說明文檔,其中有不少要求你操作之前必須先進行相應的保存操作。舉個例子:

      我有一個聯繫人,分組爲A,而A在設備上原來不存在。那麼我們的理所當然的邏輯就是:

      創建聯繫人,創建分組A,然後將聯繫人添加到分組A中,最後保存通訊錄的修改。

      實際上,當你在將聯繫人添加到分組A中之前,你需要先保存通訊錄的修改,將聯繫人刷到數據庫之後,你才能成功添加分組!類似的API有很多,你只有查看文檔才能知道哪些API調用之前需要保存一下數據庫。而我相信,在一般情況下,一個iOS程序員只會去查看頭文件裏頭的註釋,而不是API文檔;而ABGroup的頭文件裏頭完全沒有提到這些事情。只有在我納悶爲啥一直添加分組不成功的時候,走投無路抱着一絲希望去看文檔的時候才發現這件事情。

      本來程序員查看文檔也是完全正常的事情,問題在於其他的API在頭文件中均有對API做出一定程度的說明,而這些明明有坑的API卻完全不說明,我只好吐槽了。


      最後友情提示,使用ABAddressBook的API時,請詳細翻閱文檔,而不是僅查看頭文件。因爲ABAddressBook.h頭文件中的友好的說明和註釋,會讓你在跳到其他幾個頭文件的坑的時候死得更慘。

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章