溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

吐槽:iOS要獲得聯(lián)系人所屬分組好麻煩

發(fā)布時(shí)間:2020-07-03 02:54:48 來源:網(wǎng)絡(luò) 閱讀:718 作者:kensou503 欄目:移動(dòng)開發(fā)

      最近接觸iOS的AddressBook.framework教多,覺得關(guān)于聯(lián)系人這塊的API,如果只是讀取或者簡(jiǎn)單的創(chuàng)建,他提供的api還是能滿足需要的。但是,如果你需要做一個(gè)類似通訊錄同步的,那么他的API用起來就稍稍麻煩一點(diǎn)。

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

      其次,在新增聯(lián)系人的時(shí)候,如果你想設(shè)置他的分組,調(diào)用相應(yīng)API的時(shí)候,請(qǐng)注意查看API說明文檔,其中有不少要求你操作之前必須先進(jìn)行相應(yīng)的保存操作。舉個(gè)例子:

      我有一個(gè)聯(lián)系人,分組為A,而A在設(shè)備上原來不存在。那么我們的理所當(dāng)然的邏輯就是:

      創(chuàng)建聯(lián)系人,創(chuàng)建分組A,然后將聯(lián)系人添加到分組A中,最后保存通訊錄的修改。

      實(shí)際上,當(dāng)你在將聯(lián)系人添加到分組A中之前,你需要先保存通訊錄的修改,將聯(lián)系人刷到數(shù)據(jù)庫之后,你才能成功添加分組!類似的API有很多,你只有查看文檔才能知道哪些API調(diào)用之前需要保存一下數(shù)據(jù)庫。而我相信,在一般情況下,一個(gè)iOS程序員只會(huì)去查看頭文件里頭的注釋,而不是API文檔;而ABGroup的頭文件里頭完全沒有提到這些事情。只有在我納悶為啥一直添加分組不成功的時(shí)候,走投無路抱著一絲希望去看文檔的時(shí)候才發(fā)現(xiàn)這件事情。

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


      最后友情提示,使用ABAddressBook的API時(shí),請(qǐng)?jiān)敿?xì)翻閱文檔,而不是僅查看頭文件。因?yàn)锳BAddressBook.h頭文件中的友好的說明和注釋,會(huì)讓你在跳到其他幾個(gè)頭文件的坑的時(shí)候死得更慘。

     

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI