IOS 开发之读取addressbook的实现实例

发布时间 - 2026-01-11 03:17:46    点击率:

IOS 开发之读取addressbook的实现实例

iphone读取addressbook:

1.添加addressbook.framework

2.在需要的源文件中    

#import <AddressBook/AddressBook.h> 
#import <AddressBookUI/AddressBookUI.h> 

3.开始粘代码:

//get all people info from the address book 
ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);//这是个数组的引用 
for(int i = 0; i<CFArrayGetCount(people); i++){ 
  //parse each person of addressbook 
  ABRecordRef record=CFArrayGetValueAtIndex(people, i);//取出一条记录 
  //以下的属性都是唯一的,即一个人只有一个FirstName,一个Organization。。。 
  CFStringRef firstName = ABRecordCopyValue(record,kABPersonFirstNameProperty); 
  CFStringRef lastName = ABRecordCopyValue(record,kABPersonLastNameProperty); 
  CFStringRef company = ABRecordCopyValue(record,kABPersonOrganizationProperty); 
  CFStringRef department = ABRecordCopyValue(record,kABPersonDepartmentProperty); 
  CFStringRef job = ABRecordCopyValue(record,kABPersonJobTitleProperty); 
  //"CFStringRef"这个类型也是个引用,可以转成NSString* 
  NSlog((NSString *)firstName); 
  //...... 
  //所有这些应用都是要释放的,手册里是说“you are responsible to release it" 
  (firstName==NULL)?:CFRelease(firstName); 
  (lastName==NULL)?:CFRelease(lastName); 
  (company==NULL)?:CFRelease(company); 
  (department==NULL)?:CFRelease(department); 
  (job==NULL)?:CFRelease(job); 
  //....... 
  //有些属性不是唯一的,比如一个人有多个电话:手机,主电话,传真。。。 
  ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
  //所有ABMutableMultiValueRef这样的引用的东西都是这样一个元组(id,label,value) 
  multiPhone = ABRecordCopyValue(record, kABPersonPhoneProperty); 
  for (CFIndex i = 0; i < ABMultiValueGetCount(multiPhone); i++) { 
    CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(multiPhone, i); 
    CFStringRef numberRef = ABMultiValueCopyValueAtIndex(multiPhone, i); 
    //可以通过元组的label来判定这个电话是哪种电话,比如下面就包括:主电话,手机,工作传真 
    if([(NSString *)labelRef isEqualToString:(NSString *) kABPersonPhoneMainLabel]){ 
      person._mainPhone = (NSString *)numberRef; 
    }else if([(NSString *)labelRef isEqualToString:(NSString *) kABPersonPhoneMobileLabel]){ 
      person._cellPhone = (NSString *)numberRef; 
    }else if([(NSString *)labelRef compare:(NSString *) kABPersonPhoneWorkFAXLabel]==NSOrderedSame){ 
      person._fax = (NSString *)numberRef; 
    } 
    CFRelease(labelRef); 
    CFRelease(numberRef); 
  } 
  CFRelease(multiPhone); 
} 
//释放资源 
//其他还有url,email,地址等等属性都是ABMutableMultiValueRef多值类型的,可以采用循环来遍历 
 

完了,保存addressbook的部分等以后。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# IOS  # 读取addressbook的实例  # iPhone  # 读取addressbook的实现方法  # IOS 中弹框的实现方法整理  # Android实现类似iOS风格的对话框实例代码  # ios微信浏览器返回不刷新问题完美解决方法  # iOS开发之TextField禁用粘贴、选择和全选功能  # JS解决IOS中拍照图片预览旋转90度BUG的问题  # IOS开发之手势响应事件优先级的实例详解  # 都是  # 是个  # 多个  # 如有  # 遍历  # 是唯一  # 可以通过  # 希望能  # 这样一个  # 是说  # 只有一个  # 谢谢大家  # 这是个  # 哪种  # 转成  # 疑问请  # int  # CFArrayGetCount  # ABAddressBookCreate  # addressbook 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何在Windows服务器上快速搭建网站?  如何在香港免费服务器上快速搭建网站?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  微信公众帐号开发教程之图文消息全攻略  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  如何正确选择百度移动适配建站域名?  Laravel集合Collection怎么用_Laravel集合常用函数详解  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  如何快速搭建支持数据库操作的智能建站平台?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何在万网开始建站?分步指南解析  Laravel storage目录权限问题_Laravel文件写入权限设置  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  iOS UIView常见属性方法小结  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  javascript基本数据类型及类型检测常用方法小结  浅谈javascript alert和confirm的美化  北京的网站制作公司有哪些,哪个视频网站最好?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何快速搭建高效WAP手机网站吸引移动用户?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel观察者模式如何使用_Laravel Model Observer配置  js实现点击每个li节点,都弹出其文本值及修改  Mybatis 中的insertOrUpdate操作  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  js代码实现下拉菜单【推荐】  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Windows Hello人脸识别突然无法使用  大同网页,大同瑞慈医院官网?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  MySQL查询结果复制到新表的方法(更新、插入)  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel如何实现用户注册和登录?(Auth脚手架指南)  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel如何自定义分页视图?(Pagination示例)  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何在宝塔面板中创建新站点?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  魔方云NAT建站如何实现端口转发?