iOS通过app读取通讯录信息(整理)

2024-06-08 10:32

本文主要是介绍iOS通过app读取通讯录信息(整理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iOS通过app读取通讯录信息,读取通讯录信息时需要加载AddressBookUI 和AddressBook两个包,并且引入头文件
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
具体实现如下:

-(void)readAllPeoples{//定义通讯录名字为addressbookABAddressBookRef tmpAddressBook = nil;//根据系统版本不同,调用不同方法获取通讯录if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) {tmpAddressBook=ABAddressBookCreateWithOptions(NULL, NULL);dispatch_semaphore_t sema=dispatch_semaphore_create(0);ABAddressBookRequestAccessWithCompletion(tmpAddressBook, ^(bool greanted, CFErrorRef error){dispatch_semaphore_signal(sema);});dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);dispatch_release(sema);}else{tmpAddressBook =ABAddressBookCreate();}//取得通讯录失败if (tmpAddressBook==nil) {return ;};//将通讯录中的信息用数组方式读出NSArray* tmpPeoples = (NSArray*)ABAddressBookCopyArrayOfAllPeople(tmpAddressBook);//遍历通讯录中的联系人for(id tmpPerson in tmpPeoples){//获取的联系人单一属性:First nameNSString* tmpFirstName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonFirstNameProperty);NSLog(@"First name:%@", tmpFirstName);[tmpFirstName release];//获取的联系人单一属性:Last nameNSString* tmpLastName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonLastNameProperty);NSLog(@"Last name:%@", tmpLastName);[tmpLastName release];//获取的联系人单一属性:NicknameNSString* tmpNickname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNicknameProperty);NSLog(@"Nickname:%@", tmpNickname);[tmpNickname release];//获取的联系人单一属性:Company nameNSString* tmpCompanyname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonOrganizationProperty);NSLog(@"Company name:%@", tmpCompanyname);[tmpCompanyname release];//获取的联系人单一属性:Job TitleNSString* tmpJobTitle= (NSString*)ABRecordCopyValue(tmpPerson, kABPersonJobTitleProperty);NSLog(@"Job Title:%@", tmpJobTitle);[tmpJobTitle release];//获取的联系人单一属性:Department nameNSString* tmpDepartmentName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonDepartmentProperty);NSLog(@"Department name:%@", tmpDepartmentName);[tmpDepartmentName release];//获取的联系人单一属性:Email(s)ABMultiValueRef tmpEmails = ABRecordCopyValue(tmpPerson, kABPersonEmailProperty);for(NSInteger j = 0; ABMultiValueGetCount(tmpEmails); j++){NSString* tmpEmailIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpEmails, j);NSLog(@"Emails%d:%@", j, tmpEmailIndex);[tmpEmailIndex release];}CFRelease(tmpEmails);//获取的联系人单一属性:BirthdayNSDate* tmpBirthday = (NSDate*)ABRecordCopyValue(tmpPerson, kABPersonBirthdayProperty);NSLog(@"Birthday:%@", tmpBirthday);[tmpBirthday release];//获取的联系人单一属性:NoteNSString* tmpNote = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNoteProperty);NSLog(@"Note:%@", tmpNote);[tmpNote release];//获取的联系人单一属性:Generic phone numberABMultiValueRef tmpPhones = ABRecordCopyValue(tmpPerson, kABPersonPhoneProperty);for(NSInteger j = 0; j < ABMultiValueGetCount(tmpPhones); j++){NSString* tmpPhoneIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpPhones, j);NSLog(@"tmpPhoneIndex%d:%@", j, tmpPhoneIndex);[tmpPhoneIndex release];}CFRelease(tmpPhones);}//释放内存[tmpPeoples release];CFRelease(tmpAddressBook);
}

这篇关于iOS通过app读取通讯录信息(整理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041928

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife