温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

吐槽:iOS要获得联系人所属分组好麻烦

发布时间:2020-07-03 02:54:48 来源:网络 阅读:718 作者:kensou503 栏目:移动开发

      最近接触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头文件中的友好的说明和注释,会让你在跳到其他几个头文件的坑的时候死得更惨。

     

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI