ABAddressBook 和ABAddressBookUI是iOS9.0之前使用获取联系人信息的.iOS9.0之后,苹果推出了新的框架Contact和ContactUI. AB是使用C写的,调用方法全部都是C的函数,而CN是用OC写的,调用方法简单.
1.ABAddressBook 和ABAddressBookUI
ABAddressBookUI是封装的ABAddressBook API,用来操作数据库联系人信息.
a.ABPeoplePickerNavigationController 展示联系人列表;
b.ABPersonViewController,展示传入的peoson属性,通过设置属性决定是否编辑;
c.ABNewPersonViewController 添加一个新的person,但是该VC必须加入到Navi下,所以需要模态推出该视图;
d.ABUnknownPersonViewController 使用当前数据库内联系人,创建一个新的Person.
以上四个VC都有各自的代理方法,处理之后的工作.
也可以直接使用ABAddressBook API来操作联系人信息
a. 添加联系人,添加联系人之前判断联系人是否存在:
图片中只判断了联系人姓名,可以多个属性同时进行判断,来决定是否已经添加.
联系人的某些属性,eg:电话号码,邮箱等都是可以填写多个,所以需需要使用多值属性.
b.删除Person
2.Contact和ContactUI
与ABAddressBookUI一样,ContactUI也是苹果提供的操作联系人信息的快捷方式.
ContactUI中只有两个控制器,CNContactPickerViewController和CNContactViewController,
a. CNContactPickerViewController 展示联系人列表;
b. CNContactViewController 提供如下三种初始化方法,与AB功能相同
+ (instancetype)viewControllerForContact:(CNContact*)contact;
+ (instancetype)viewControllerForUnknownContact:(CNContact*)contact;
+ (instancetype)viewControllerForNewContact:(nullableCNContact*)contact
a. 使用Contact API添加联系人, 删除联系
保存联系人
delete联系人