读取手机通讯录

原帖:http://blog.csdn.net/chyroger/article/details/5770636

iphone读取addressbook:
1.添加addressbook.framework
2.在需要的源文件中
     
[cpp]  view plain copy
  1. #import <AddressBook/AddressBook.h>  
  2. #import <AddressBookUI/AddressBookUI.h>  
 
3.开始粘代码:
[cpp]  view plain copy
  1. //get all people info from the address book  
  2. ABAddressBookRef addressBook = ABAddressBookCreate();  
  3. CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);//这是个数组的引用  
  4. for(int i = 0; i<CFArrayGetCount(people); i++){  
  5.     //parse each person of addressbook  
  6.     ABRecordRef record=CFArrayGetValueAtIndex(people, i);//取出一条记录  
  7.     //以下的属性都是唯一的,即一个人只有一个FirstName,一个Organization。。。  
  8.     CFStringRef firstName = ABRecordCopyValue(record,kABPersonFirstNameProperty);  
  9.     CFStringRef lastName =  ABRecordCopyValue(record,kABPersonLastNameProperty);  
  10.     CFStringRef company = ABRecordCopyValue(record,kABPersonOrganizationProperty);  
  11.     CFStringRef department = ABRecordCopyValue(record,kABPersonDepartmentProperty);  
  12.     CFStringRef job = ABRecordCopyValue(record,kABPersonJobTitleProperty);  
  13.     //"CFStringRef"这个类型也是个引用,可以转成NSString*  
  14.     NSlog((NSString *)firstName);  
  15.     //......  
  16.     //所有这些应用都是要释放的,手册里是说“you are responsible to release it"  
  17.     (firstName==NULL)?:CFRelease(firstName);  
  18.     (lastName==NULL)?:CFRelease(lastName);  
  19.     (company==NULL)?:CFRelease(company);  
  20.     (department==NULL)?:CFRelease(department);  
  21.     (job==NULL)?:CFRelease(job);  
  22.     //.......  
  23.     //有些属性不是唯一的,比如一个人有多个电话:手机,主电话,传真。。。  
  24.     ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);  
  25.     //所有ABMutableMultiValueRef这样的引用的东西都是这样一个元组(id,label,value)  
  26.     multiPhone = ABRecordCopyValue(record, kABPersonPhoneProperty);  
  27.     for (CFIndex i = 0; i < ABMultiValueGetCount(multiPhone); i++) {  
  28.         CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(multiPhone, i);  
  29.         CFStringRef numberRef = ABMultiValueCopyValueAtIndex(multiPhone, i);  
  30.         //可以通过元组的label来判定这个电话是哪种电话,比如下面就包括:主电话,手机,工作传真  
  31.         if([(NSString *)labelRef isEqualToString:(NSString *) kABPersonPhoneMainLabel]){  
  32.             person._mainPhone = (NSString *)numberRef;  
  33.         }else if([(NSString *)labelRef isEqualToString:(NSString *) kABPersonPhoneMobileLabel]){  
  34.             person._cellPhone = (NSString *)numberRef;  
  35.         }else if([(NSString *)labelRef compare:(NSString *) kABPersonPhoneWorkFAXLabel]==NSOrderedSame){  
  36.             person._fax = (NSString *)numberRef;  
  37.         }  
  38.         CFRelease(labelRef);  
  39.         CFRelease(numberRef);  
  40.     }  
  41.     CFRelease(multiPhone);  
  42. }  
  43. //释放资源  
  44. //其他还有url,email,地址等等属性都是ABMutableMultiValueRef多值类型的,可以采用循环来遍历  
 

完了,保存addressbook的部分等以后。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值