前言
iOS通讯录框架有AddressBook,AddressBookUI,Contacts,ContactsUI.
iOS9 AddressBook,AddressBookUI不推荐使用了,用Contacts,ContactsUI代替。
如果项目支持到iOS8或以下,还是使用AddressBook,AddressBookUI。本篇只涉及AddressBook框架的4个类。
可以看到AddressBook包含内容如下图
授权
首先导入头文件 #import <AddressBook/AddressBook.h>
1 | //如果用户没决定过,请求授权 |
授权状态一共有四个值,可以自己点击去头文件看一下。为什么release,CoreFoundation框架内存需要手动管理,遇到create,copy,new,retain都需要release。
读取联系人信息
1 | ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL); |
关于__bridge_transfer,是桥接的关键字之一,还有__bridge_retained和__bridge,可以自行搜索桥接了解,关键的是转换对象所有权的问题。
新增联系人
1 | ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL); |
这里有一点就是,电话下面的标签,如果你在电话属性下面找,有住宅,工作,其他,但都是传真。其实是在通用下面,因为邮箱也用得到这些标签。