IOS---访问通讯录
发布日期:2021-11-21 04:41:04 浏览次数:28 分类:技术文章

本文共 1585 字,大约阅读时间需要 5 分钟。

一。没有提供界面的“低级”API:AddressBook

ABAddressBookRef是Core Foundation框架访问通讯录的接口

//创建ABAddressBookRef

CFErrorRef error = NULL;    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
//请求权限并且释放资源,如果权限通过的话调用代码块里面的内容,使用完之后需要手动释放对象,因为Core Foundation不支持ARC技术

ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {                if(granted)        {            [self filterContentForSearchText:@""];        }    });    CFRelease(addressBook);
//判断改程序是否得到验证和授权

if(ABAddressBookGetAuthorizationStatus()!=kABAuthorizationStatusAuthorized)    {        return;        }

//需要明确的是Core Foundation和Foundation的区别,前者提供C接口,所以在操作Core Foundation里面的函数方法都不会带“*”,而后者是提供的Object-c接口,但是两者之间可以转化,比如用(__bridge)type->Foundation或者CFBridgingRelease来转化,后者是ARC;另外还可以通过下面的方式转换NSString类型

CFStringRef cfSearchText = (CFStringRef)CFBridgingRetain(searchText);

//访问所有的联系人

self.listContacts = CFBridgingRelease(ABAddressBookCopyArrayOfAllPeople(addressBook));

//更具名字访问联系人

self.listContacts = CFBridgingRelease(ABAddressBookCopyPeopleWithName(addressBook, cfSearchText));

//如何访问数组里面的条目呢?

*取得单个人

ABRecordRef thisPerson = CFBridgingRetain([self.listContacts objectAtIndex:[indexPath row]]);
//取得姓和名

NSString *firstName = CFBridgingRelease(ABRecordCopyValue(thisPerson, kABPersonFirstNameProperty));    firstName = firstName != nil?firstName:@"";    NSString *lastName =  CFBridgingRelease(ABRecordCopyValue(thisPerson, kABPersonLastNameProperty));    lastName = lastName != nil?lastName:@"";

//直接取得名字

NSString* name = CFBridgingRelease(ABRecordCopyCompositeName(thisPerson));

转载地址:https://blog.csdn.net/xiaoji94shen/article/details/22715361 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:IOS--MKNetworkKit的使用方法
下一篇:IOS---CoreData详解

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月08日 05时54分50秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

python numpy 函数详解_python使用numpy中的size()函数实例用法详解 2019-04-21
java spring上传文件_Java Spring文件上传,Java文件上传,Java通用文件上传 2019-04-21
linux 模拟键盘输入到进程,Linux 下模拟键盘输入 2019-04-21
linux服务器上已安装R 用户下载R包,R语言安装R package的2种方法 2019-04-21
linux 7 磁盘空间太小,Linux下磁盘保留空间的调整,解决df看到的空间和实际磁盘大小不一致的问题... 2019-04-21
linux下mysql 备份方法,Linux下mysql数据库备份方法小结 2019-04-21
bootstrap 页面垂直居中_iframe中如何让layer提示框显示在垂直居中的位置 2019-04-21
肺部ct重建_胸片检查容易漏诊肺癌,去年正常今年晚期常发生,体检一定要做CT... 2019-04-21
3dmax如何拆分模型_3D建模大佬如何制作出惊艳四方的游戏建模,看完这篇文章我知道了... 2019-04-21
x86so文件装换成arm64位_64位系统正式发布说明及介绍!! 2019-04-21
for循环中取出最大最小 累加_LeetCode之长度最小的子数组 2019-04-21
如何打开老公人脸识别_【话题】南宁已有小区启用人脸识别门禁,有人点赞有人忧... 2019-04-21
makex机器人程序_机器人教育为相城青少年叩开科学世界大门 2019-04-21
一寸照纯红色底图片_Ella陈嘉桦也是“时髦精”,穿玫红色西装配拼色半身裙,高级洋气... 2019-04-21
米哈游客户端笔试题_Garena校招 游戏客户端开发通关面经 2019-04-21
airpodspro没有弹窗_使用AirPods Pro一天的主观感受 2019-04-21
创建物化视图commit_视图及范式 2019-04-21
函数传参字典_Python新手上车17:函数传递任意多个参数 2019-04-21
去掉数组最后一个元素_【一天一大 lee】在排序数组中查找元素的第一个和最后一个位置 (难度:中等) Day20201201... 2019-04-21
秦九韶算法递推公式_算法讲解之复杂度分析 2019-04-21