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

相关文章

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

JavaScript整理笔记

JavaScript笔记 JavaScriptJavaScript简介快速入门JavaScript用法基础语法注释关键字显示数据输出innerHTML innerText属性返回值的区别调试 数据类型和变量数据类型数字(Number)字符串(String)布尔值(Boolean)null(空值)和undefined(未定义)数组(Array)对象(Object)函数(Function) 变量

Linux命令(11):系统信息查看命令

系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -tv