我们如果想要自己去获取通讯录当中的数据,然后自己去搭建界面,我们可以这么做,首先其实我们会发现就算我们不去授权通讯录好像也可以跑起来,但是其实是必须要去请求用户的授权的,不然上架可能会被拒。

获取授权步骤如下所示

1、先去获取授权的状态

2、创建AddressBook

3、判断授权状态,没有授权就去请求授权

4、最后别忘记释放Core Foundation对象

我们可以在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 这个方法中进行请求授权

    //创建通讯录ABAddressBookRef address = ABAddressBookCreateWithOptions(NULL, NULL);//判断有没有授权if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined){ABAddressBookRequestAccessWithCompletion(address, ^(bool granted, CFErrorRef error) {if(error){NSLog(@"出错");return;}if(granted){NSLog(@"授权成功");}else{NSLog(@"授权失败");}});
CFRelease(address);
}

然后我们这里就是测试下,在touchesBegan中写入下面的方法去获取数据,其实大致的步骤是这样的

1、先去判断授权没有有成功,授权成功,我们再去获取数据

2、创建通讯录

3、我们需要去获取通讯录中的联系人数组也就是通过CFArray去获取

4、遍历联系人以此来获取联系人中存储的数据就比如说姓名和电话

5、取出单个联系人通过ABRecordRef

6、去取名字和电话

7、最后别忘记了Core Foundation框架的对象的释放

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{//先去判断是否授权成功了,如果授权成功再去获取数据if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusAuthorized){//1、首先我们应该先去创建通讯录ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);//2、创建联系人数组CFArrayRef peoples = ABAddressBookCopyArrayOfAllPeople(addressBook);CFIndex count = CFArrayGetCount(peoples);for(int i=0;i<count;i++){//3下面函数的返回值是const void *由于CFTypeRef其实就是void * 然后ABRecordRef也是,所以这里也就是返回单个联系人ABRecordRef people = CFArrayGetValueAtIndex(peoples, i);//4、获取名字NSString * name = CFBridgingRelease(ABRecordCopyValue(people, kABPersonLastNameProperty));NSLog(@"%@",name);//5、获取电话ABMultiValueRef phones = ABRecordCopyValue(people, kABPersonPhoneProperty);//6.1获取号码的countCFIndex phontCount = ABMultiValueGetCount(phones);//6.2遍历ABMultiValueReffor(CFIndex i=0;i<phontCount;i++){//获取号码的标签NSString * text = CFBridgingRelease(ABMultiValueCopyLabelAtIndex(phones, i));//获取号码NSString * value = CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, i));NSLog(@"text: %@ value: %@",text,value);}CFRelease(phones);NSLog(@"-----------------");}CFRelease(peoples);CFRelease(addressBook);}}

输出结果如下所示

ios-AddressBook框架相关推荐

  1. iOS总体框架介绍和详尽说明

    总体介绍 iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer(触摸UI层).MediaLayer(媒体层).Cor ...

  2. iOS 常用框架介绍

    iOS框架介绍      Cocoa Touch GameKit  实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息  iOS设备之间蓝牙数据传输   从iOS7开始过期   局域网游戏 ...

  3. iOS所有框架-Cocoatouch等

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. Cocoa Touch层包含创建 iOS应 ...

  4. swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程

    swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 1.2.3  注册非免费苹果账号swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 免费的苹果账号在 ...

  5. Swift版iOS游戏框架Sprite Kit基础教程下册

    Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C  介绍:本教程是国内唯一的Swift版的Spritekit教程 ...

  6. iOS游戏框架Sprite Kit基础教程第1章编写第一个Sprite Kit程序

    iOS游戏框架Sprite Kit基础教程第1章编写第一个Sprite Kit程序 程序是为了实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.本章将以编写第一个Sprite Kit程序为 ...

  7. iOS游戏框架Sprite Kit基础教程——Swift版上册

    iOS游戏框架Sprite Kit基础教程--Swift版上册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C  介绍:本教程是国内唯一的Swift版的Spritekit ...

  8. 详解OS X和iOS图像处理框架Core Image

     详解OS X和iOS图像处理框架Core Image width="22" height="16" src="http://hits.sinaj ...

  9. 如何使用iOS AddressBook

    一.基本知识 和通讯录中联系人相关的应用iPhone提供了两个框架:AddressBook.framework和AddressBookUI.framework,使用这两个框架我们可以在程序中访问并显示 ...

  10. 开源 | 如何实现一个iOS AOP框架?

    简介:Aspect使用了OC的消息转发流程,有一定的性能消耗.本文作者使用C++设计语言,并使用libffi进行核心trampoline函数的设计,实现了一个iOS AOP框架--Lokie.相比于业 ...

最新文章

  1. HTML5:理解head
  2. 在云中进行灾难恢复的五种有效方式
  3. [SpringBoot之Druid]
  4. 人脸识别技术突飞猛进 为应用领域拓展奠定基础
  5. JDK 11版本时间表
  6. C++实现字符串和整数之间的相互转换
  7. 国内IDC行业现状及投资策略分析
  8. 基于深度迁移学习进行时间序列分类
  9. java双层for循环
  10. Failed to load http://localhost:3000/products: The 'Access-Control-Allow-Origin' header has a value
  11. Windows Server 2016-Hyper-V HNV 新增功能
  12. Vue-Plugin开发插件
  13. Python的视频分析
  14. 前馈神经网络包括哪几类,前馈神经网络的结构
  15. 我为什么花 1 万多买 MacBook Pro,重点是推荐我常用的开发写作相关的工具
  16. Word的样式库在 选项卡中_如何使用word文档?word文档使用技巧教程?
  17. composer总结
  18. 最短路问题之单源最短路-Dijkstra算法
  19. 《致我们终将逝去的青春》
  20. Linnx常用命令(持续更新)

热门文章

  1. 教程(二)安装Java JDK
  2. 用Python爬取京东手机评论
  3. matlab求解常微分方程的实验,实验五 - - 用matlab求解常微分方程
  4. ZenTaoPMS.11.6.5.zbox_64.tar
  5. 39、C++定义一个类,实现向量的加减运算
  6. 传智播客学习日记Day9
  7. c语言大数乘方算法,用c语言实现大数乘方
  8. html标签不使用css样式,html – 忽略CSS样式
  9. ubuntu18.04 安装 QQ
  10. yolo极大抑制_Pytorch从0开始实现YOLO V3指南 part4——置信度阈值和非极大值抑制...