Demo地址:我的github仓库
啦啦啦,一天一更新博客的节奏啊,前天晚上研究滴滴出行APP,发现它有一个紧急联系人的功能诶!!!
宝宝仔细的研究了一下,发现弹出联系人的控制器(CNContactPickerViewController)之后当选择一个联系人之后,
滴滴上就出现了我选择的那个联系人的名字诶!!!
跟我存储联系人的名字一模一样!!!
由此进行了一番研究,于昨晚在浩如烟海的博客中找到了这篇比较详细的博客与大家分享,其中做了一些修改。
/*******************分割线*********************/
一、引言
在以前iOS开发中,涉及联系人相关的编程,代码都非常繁琐,并且框架的设计也不是Objective-C风格的,这使开发者用起来非常的难受。在iOS9中,apple终于解决了这个问题,全新的Contacts Framework将完全替代AddressBookFramework,AddressBookFramework也将成为历史被弃用。至于AddressBookFramework的相关api如何繁琐,在以前的博客中有记录,地址如下:
联系人信息相关编程:http://my.oschina.net/u/2340880/blog/407347。
联系人UI界面相关编程:http://my.oschina.net/u/2340880/blog/407973。
这一新的框架是iOS9新特性中十分受欢迎的一个。apple的Objective—C体系也更加完善与强大。
二、让我们来添加一个联系人
新的框架的整体思路是通过配置与请求来管理联系人,这样做有一个非常大的好处,逻辑简单,代码层次清晰。如下,通过添加一个联系人来向大家做演示:
1、联系人对象:CNContact
这个对象是用来配置联系人信息的,有可变的CNMutaleContact和CNContact,区别用来读取和创建联系人。CNContact对象中有许多属性,对应联系人的一些信息。
首先,创建CNMutableContact对象:
CNMutableContact * contact = [[CNMutableContact alloc]init];
设置联系人头像:
contact.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]);
设置联系人姓名:
//设置名字
contact.givenName = @"Yanhua";
//设置姓氏
contact.familyName = @"Wong";
设置联系人邮箱:
CNLabeledValue *homeEmail = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:@"emywong@sina.com"];
CNLabeledValue *workEmail =[CNLabeledValue labe