IOS开发笔记 IOS如何访问通讯录
IOS开发笔记 IOS如何访问通讯录
实现方法:
- //读取所有联系人
- -(void)ReadAllPeoples
- {
- //取得本地通信录名柄
- ABAddressBookRef 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 name
- NSString* tmpFirstName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonFirstNameProperty);
- NSLog(@"First name:%@", tmpFirstName);
- [tmpFirstName release];
- //获取的联系人单一属性:Last name
- NSString* tmpLastName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonLastNameProperty);
- NSLog(@"Last name:%@", tmpLastName);
- [tmpLastName release];
- //获取的联系人单一属性:Nickname
- NSString* tmpNickname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNicknameProperty);
- NSLog(@"Nickname:%@", tmpNickname);
- [tmpNickname release];
- //获取的联系人单一属性:Company name
- NSString* tmpCompanyname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonOrganizationProperty);
- NSLog(@"Company name:%@", tmpCompanyname);
- [tmpCompanyname release];
- //获取的联系人单一属性:Job Title
- NSString* tmpJobTitle= (NSString*)ABRecordCopyValue(tmpPerson, kABPersonJobTitleProperty);
- NSLog(@"Job Title:%@", tmpJobTitle);
- [tmpJobTitle release];
- //获取的联系人单一属性:Department name
- NSString* 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);
- //获取的联系人单一属性:Birthday
- NSDate* tmpBirthday = (NSDate*)ABRecordCopyValue(tmpPerson, kABPersonBirthdayProperty);
- NSLog(@"Birthday:%@", tmpBirthday);
- [tmpBirthday release];
- //获取的联系人单一属性:Note
- NSString* tmpNote = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNoteProperty);
- NSLog(@"Note:%@", tmpNote);
- [tmpNote release];
- //获取的联系人单一属性:Generic phone number
- ABMultiValueRef 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);
- }
解释下代码:由于ios6.0系统的升级,对客户隐私有了一个较大的提示。
- tmpAddressBook =ABAddressBookCreate();这样就可以读取了,但是现在要做一个判断了。可以具体看看代码。
- 把通讯录取出来放在一个array里面。这样你就可以对数组进行你的要求了。
备注:
备注二:
转载于:https://www.cnblogs.com/new0801/p/6175845.html
IOS开发笔记 IOS如何访问通讯录相关推荐
- iOS开发笔记--iOS应用架构谈 view层的组织和调用方案
前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...
- iOS开发笔记-两种单例模式的写法
iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...
- IOS开发笔记之推广安装(用网页判断是否安装App)
IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...
- IOS开发系列--IOS程序开发概览
IOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 9983 阅读, 51 评论, 收藏, 编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我 ...
- 玩转iOS开发:iOS 11 新特性《UIKit新特性的基本认识》
文章分享至我的个人技术博客: https://cainluo.github.io/15099354591154.html 前两篇, 我们讲了Xcode 9的一些新特性, 可以更加方便我们去写" ...
- iOS开发系列--IOS程序开发概览ios基础
iOS开发系列--IOS程序开发概览 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的I ...
- ZYNQ LINUX开发笔记——内存直接访问
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ LINUX开发笔记--内存直接访问 LINUX 脚本方式 C APP模式 LINUX 脚本方式 写内存: devmem 0x ...
- 转载大神IOS开发系列【16】--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook
转载自:http://www.cnblogs.com/kenshincui/p/4220402.html --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如Q ...
- IOS开发笔记之常用的第三方库(太多了。)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...
- IOS开发笔记2-C语言基础复习
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53439812 本文出自:[顾林海的博客] 前言 在正式进入ios开发前 ...
最新文章
- Unicorn 4.6.3 发布,Rack的HTTP服务器
- IntelliJ IDEA使用记录
- java遍历树_Java实现遍历N级树形目录结构
- mysql cnf参数_系统运维|MySQL my.cnf参数配置优化详解
- python爬虫步骤-Python爬虫详解,每一个步骤都给你细腻的讲解(附源码)
- bash: ssh: command not found解决方法
- JAVA实现邮件发送
- 遥感常用数据下载链接
- 【无人机航空摄影测量精品教程】目录:Pix4d、EPS、CC、PhotoScan、Godwork项目化作业流程及注意事项汇总
- AVR单片机教程——DAC
- 异次元发卡源码/荔枝发卡V3.0二次元风格发卡网全开源源码/对接免签约支付接口
- 马小看前端( 在开发中遇到问题如何解决 )
- wordpress文章自动同步天涯博客插件wp2Tianya发布
- 手机手写签名 php,基于canvas实现手写签名(vue)
- centos7搭建开源ERP-PSI
- 两个有序数组A、B,长度分别为m、n,找到两个数组的第k个值并返回
- python分析微博粉丝_python数据分析微博热门
- 人散后,一钩新月天如水----丰子恺的漫画人生
- 浅入浅出代理模式与Spring事务管理
- 定位后端开发,有哪些书籍值得推荐?