1. ABAddressBookRef addressBook = ABAddressBookCreate();
  2.  
  3. CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);
  4.  
  5. for(int i = 0; i < CFArrayGetCount(results); i++)
  6. {
  7. ABRecordRef person = CFArrayGetValueAtIndex(results, i);
  8. //读取firstname
  9. NSString *personName = (NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
  10. if(personName != nil)
  11. textView.text = [textView.text stringByAppendingFormat:@"\n姓名:%@\n",personName];
  12. //读取lastname
  13. NSString *lastname = (NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
  14. if(lastname != nil)
  15. textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastname];
  16. //读取middlename
  17. NSString *middlename = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty);
  18. if(middlename != nil)
  19. textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlename];
  20. //读取prefix前缀
  21. NSString *prefix = (NSString*)ABRecordCopyValue(person, kABPersonPrefixProperty);
  22. if(prefix != nil)
  23. textView.text = [textView.text stringByAppendingFormat:@"%@\n",prefix];
  24. //读取suffix后缀
  25. NSString *suffix = (NSString*)ABRecordCopyValue(person, kABPers*****uffixProperty);
  26. if(suffix != nil)
  27. textView.text = [textView.text stringByAppendingFormat:@"%@\n",suffix];
  28. //读取nickname呢称
  29. NSString *nickname = (NSString*)ABRecordCopyValue(person, kABPersonNicknameProperty);
  30. if(nickname != nil)
  31. textView.text = [textView.text stringByAppendingFormat:@"%@\n",nickname];
  32. //读取firstname拼音音标
  33. NSString *firstnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty);
  34. if(firstnamePhonetic != nil)
  35. textView.text = [textView.text stringByAppendingFormat:@"%@\n",firstnamePhonetic];
  36. //读取lastname拼音音标
  37. NSString *lastnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty);
  38. if(lastnamePhonetic != nil)
  39. textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastnamePhonetic];
  40. //读取middlename拼音音标
  41. NSString *middlenamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty);
  42. if(middlenamePhonetic != nil)
  43. textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlenamePhonetic];
  44. //读取organization公司
  45. NSString *organization = (NSString*)ABRecordCopyValue(person, kABPersonOrganizationProperty);
  46. if(organization != nil)
  47. textView.text = [textView.text stringByAppendingFormat:@"%@\n",organization];
  48. //读取jobtitle工作
  49. NSString *jobtitle = (NSString*)ABRecordCopyValue(person, kABPersonJobTitleProperty);
  50. if(jobtitle != nil)
  51. textView.text = [textView.text stringByAppendingFormat:@"%@\n",jobtitle];
  52. //读取department部门
  53. NSString *department = (NSString*)ABRecordCopyValue(person, kABPersonDepartmentProperty);
  54. if(department != nil)
  55. textView.text = [textView.text stringByAppendingFormat:@"%@\n",department];
  56. //读取birthday生日
  57. NSDate *birthday = (NSDate*)ABRecordCopyValue(person, kABPersonBirthdayProperty);
  58. if(birthday != nil)
  59. textView.text = [textView.text stringByAppendingFormat:@"%@\n",birthday];
  60. //读取note备忘录
  61. NSString *note = (NSString*)ABRecordCopyValue(person, kABPersonNoteProperty);
  62. if(note != nil)
  63. textView.text = [textView.text stringByAppendingFormat:@"%@\n",note];
  64. //第一次添加该条记录的时间
  65. NSString *firstknow = (NSString*)ABRecordCopyValue(person, kABPersonCreationDateProperty);
  66. NSLog(@"第一次添加该条记录的时间%@\n",firstknow);
  67. //最后一次修改該条记录的时间
  68. NSString *lastknow = (NSString*)ABRecordCopyValue(person, kABPersonModificationDateProperty);
  69. NSLog(@"最后一次修改該条记录的时间%@\n",lastknow);
  70.  
  71. //获取email多值
  72. ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty);
  73. int emailcount = ABMultiValueGetCount(email);
  74. for (int x = 0; x < emailcount; x++)
  75. {
  76. //获取email Label
  77. NSString* emailLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x));
  78. //获取email值
  79. NSString* emailContent = (NSString*)ABMultiValueCopyValueAtIndex(email, x);
  80. textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",emailLabel,emailContent];
  81. }
  82. //读取地址多值
  83. ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty);
  84. int count = ABMultiValueGetCount(address);
  85.  
  86. for(int j = 0; j < count; j++)
  87. {
  88. //获取地址Label
  89. NSString* addressLabel = (NSString*)ABMultiValueCopyLabelAtIndex(address, j);
  90. textView.text = [textView.text stringByAppendingFormat:@"%@\n",addressLabel];
  91. //获取該label下的地址6属性
  92. NSDictionary* personaddress =(NSDictionary*) ABMultiValueCopyValueAtIndex(address, j);
  93. NSString* country = [personaddress valueForKey:(NSString *)kABPersonAddressCountryKey];
  94. if(country != nil)
  95. textView.text = [textView.text stringByAppendingFormat:@"国家:%@\n",country];
  96. NSString* city = [personaddress valueForKey:(NSString *)kABPersonAddressCityKey];
  97. if(city != nil)
  98. textView.text = [textView.text stringByAppendingFormat:@"城市:%@\n",city];
  99. NSString* state = [personaddress valueForKey:(NSString *)kABPersonAddressStateKey];
  100. if(state != nil)
  101. textView.text = [textView.text stringByAppendingFormat:@"省:%@\n",state];
  102. NSString* street = [personaddress valueForKey:(NSString *)kABPersonAddressStreetKey];
  103. if(street != nil)
  104. textView.text = [textView.text stringByAppendingFormat:@"街道:%@\n",street];
  105. NSString* zip = [personaddress valueForKey:(NSString *)kABPersonAddressZIPKey];
  106. if(zip != nil)
  107. textView.text = [textView.text stringByAppendingFormat:@"邮编:%@\n",zip];
  108. NSString* coutntrycode = [personaddress valueForKey:(NSString *)kABPersonAddressCountryCodeKey];
  109. if(coutntrycode != nil)
  110. textView.text = [textView.text stringByAppendingFormat:@"国家编号:%@\n",coutntrycode];
  111. }
  112.  
  113. //获取dates多值
  114. ABMultiValueRef dates = ABRecordCopyValue(person, kABPersonDateProperty);
  115. int datescount = ABMultiValueGetCount(dates);
  116. for (int y = 0; y < datescount; y++)
  117. {
  118. //获取dates Label
  119. NSString* datesLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y));
  120. //获取dates值
  121. NSString* datesContent = (NSString*)ABMultiValueCopyValueAtIndex(dates, y);
  122. textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",datesLabel,datesContent];
  123. }
  124. //获取kind值
  125. CFNumberRef recordType = ABRecordCopyValue(person, kABPersonKindProperty);
  126. if (recordType == kABPersonKindOrganization) {
  127. // it's a company
  128. NSLog(@"it's a company\n");
  129. } else {
  130. // it's a person, resource, or room
  131. NSLog(@"it's a person, resource, or room\n");
  132. }
  133.  
  134. //获取IM多值
  135. ABMultiValueRef instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty);
  136. for (int l = 1; l < ABMultiValueGetCount(instantMessage); l++)
  137. {
  138. //获取IM Label
  139. NSString* instantMessageLabel = (NSString*)ABMultiValueCopyLabelAtIndex(instantMessage, l);
  140. textView.text = [textView.text stringByAppendingFormat:@"%@\n",instantMessageLabel];
  141. //获取該label下的2属性
  142. NSDictionary* instantMessageContent =(NSDictionary*) ABMultiValueCopyValueAtIndex(instantMessage, l);
  143. NSString* username = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageUsernameKey];
  144. if(username != nil)
  145. textView.text = [textView.text stringByAppendingFormat:@"username:%@\n",username];
  146.  
  147. NSString* service = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageServiceKey];
  148. if(service != nil)
  149. textView.text = [textView.text stringByAppendingFormat:@"service:%@\n",service];
  150. }
  151.  
  152. //读取电话多值
  153. ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty);
  154. for (int k = 0; k<ABMultiValueGetCount(phone); k++)
  155. {
  156. //获取电话Label
  157. NSString * personPhoneLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k));
  158. //获取該Label下的电话值
  159. NSString * personPhone = (NSString*)ABMultiValueCopyValueAtIndex(phone, k);
  160.  
  161. textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",personPhoneLabel,personPhone];
  162. }
  163.  
  164. //获取URL多值
  165. ABMultiValueRef url = ABRecordCopyValue(person, kABPersonURLProperty);
  166. for (int m = 0; m < ABMultiValueGetCount(url); m++)
  167. {
  168. //获取电话Label
  169. NSString * urlLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m));
  170. //获取該Label下的电话值
  171. NSString * urlContent = (NSString*)ABMultiValueCopyValueAtIndex(url,m);
  172.  
  173. textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",urlLabel,urlContent];
  174. }
  175.  
  176. //读取照片
  177. NSData *image = (NSData*)ABPersonCopyImageData(person);
  178.  
  179. UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(200, 0, 50, 50)];
  180. [myImage setImage:[UIImage imageWithData:image]];
  181. myImage.opaque = YES;
  182. [textView addSubview:myImage];
  183.  
  184. }
  185.  
  186. CFRelease(results);
  187. CFRelease(addressBook);

ios 开发,通讯录信息调用常用方法,这个比较全,不用再整理了的更多相关文章

  1. ios读取通讯录信息

    ios读取通讯录信息 (2012-05-22 14:07:11) 标签: ios读取通讯录 it   iphone如许app读取通讯录信息,读取通讯录信息时需要加载AddressBookUI 和Add ...

  2. ios开发中如何调用苹果自带地图导航

    前段时间一直在赶项目,在外包公司工作就是命苦,天天加班不说,工作都是和工期合同挂钩的,稍微逾期就有可能被扣奖金,不谈这些伤脑筋的事情了,让我们说说iOS开发中如何调用苹果手机自带的地图. 学习如逆水行 ...

  3. ios开发 通讯录

    一.通信录开发 通信录开发主要是获取用户手机中的联系人 通过获取用户的通信录,可以在应用中添加好友等 二.如何访问用户的通讯录 在iOS9之前,有2个框架可以访问用户的通讯录 目前需要适配iOS8,所 ...

  4. iOS开发——高级技术&调用地图功能的实现

    调用地图功能的实现 一:苹果自带地图 学习如逆水行舟,不进则退.古人告诉我们要不断的反思和总结,日思则日精,月思则月精,年思则年精.只有不断的尝试和总结,才能让我们的工作和生活更加 轻松愉快和美好.连 ...

  5. MacOS和iOS开发中异步调用与多线程的区别

    很多童鞋可能对Apple开发中的异步调用和多线程的区别不是太清楚,这里本猫将用一些简单的示例来展示一下它们到底直观上有神马不同. 首先异步调用可以在同一个线程中,也可以在多个不同的线程中.每个线程都有 ...

  6. ios开发总结:Utils常用方法等收集,添加扩展类,工具类方法,拥有很多方便快捷功能(不断更新中。。。)

    BOBUtils 工具大全 本人github开源和收集功能地址:https://github.com/niexiaobo [对ios新手或者工作一年以内开发人员很有用处] 常用方法等收集.添加扩展类. ...

  7. iOS开发——设备信息小结(未完待续...)

    1.获取设备的信息  UIDevice *device = [[UIDevice alloc] init]; NSString *name = device.name;       //获取设备所有者 ...

  8. iOS开发-通讯录有界面

    // //  ViewController.m //  06-通讯录(有界面) // #import "ViewController.h" #import <AddressB ...

  9. ios开发,app调用资源文件到C++的方法

    为了读取资源文件到cpp.供opencv处理,采取的方式是把之前的cpp文件的后缀改成:.mm 然后会出现各种报错,原因是因为命名冲突,前面加上cv::就行. const char* imagePat ...

随机推荐

  1. Android学习笔记进阶之在图片上涂鸦(能清屏)

    Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...

  2. 在Windows 10上安装Oracle 11g数据库出现的问题及解决

    在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Editi ...

  3. HtmlAgilityPack

    http://htmlagilitypack.codeplex.com/wikipage?title=Examples http://nuget.org/packages/HtmlAgilityPac ...

  4. unity, 保存prefab时material丢失问题

    在程序运行时用replacePrefab(gameObj,prefab)或createPrefab(gameObj,prefab)保存prefab,遇到保存出来的prefab中material丢失的问 ...

  5. C语言计算开方

    C语言里面有sqrt可以计算开平方根,但似乎想要计算开任意次方根的话却没有一个固定的函数,自己写算法也蛮啰嗦的…… 其实啊,巧妙使用pow函数就可以实现需求. C语言库函数pow的原型声明如下: #i ...

  6. Log4j 使用总结

    在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对Logger.Appender及Layout的分别使用.Log4j支持两种配置文件格式,一种是XML格式的文件,一 ...

  7. Intent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT

    Activity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT 1. 如果已经启动了四个Activity:A,B,C和D. ...

  8. Message,MessageQueue,Looper,Handler详解+实例

    Message,MessageQueue,Looper,Handler详解+实例 原文地址 Android的Handler使用(这篇简单介绍Handler的使用) 一.几个关键概念 1.Message ...

  9. EF LEFT JON 关联查找

    var query = (from a in context.OQC_INSPECTION_SAMPLE.Where(expression).Where(a => context.OQC_INS ...

  10. String、StringBuffer、StringBuilder之间的区别

    String                      字符串常量 StringBuffer         字符串变量(线程安全) StringBuilder       字符串变量(非线程安全) ...