一、创建通讯录对象

self.addressBook=ABAddressBookCreateWithOptions(NULL, NULL);

//请求访问用户通讯录,注意无论成功与否block都会调用

ABAddressBookRequestAccessWithCompletion(self.addressBook, ^(bool granted, CFErrorRef error) {

if (!granted) {

NSLog(@"未获得通讯录访问权限!");

}

});

ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init];

peoplePicker.peoplePickerDelegate = self;

[self presentViewController:peoplePicker animated:YES completion:nil];

二、实现代理协议

ABPeoplePickerNavigationControllerDelegate

三、实现代理方法

#pragma mark -- ABPeoplePickerNavigationControllerDelegate

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {

//取得记录中得信息

ABMultiValueRef valuesRef = ABRecordCopyValue(person, kABPersonPhoneProperty);

  //lastName为姓,firstName为名,将两个字符串连接起来为wholeName全名

NSString *firstName=(__bridge NSString *) ABRecordCopyValue(person, kABPersonFirstNameProperty);//注意这里进行了强转,不用自己释放资源

NSString *lastName=(__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);

NSString *wholeName=@"";

if (firstName.length>0) {

if (lastName.length>0) {

wholeName=[lastName stringByAppendingString:firstName];

}

else{

wholeName=firstName;

}

}

else {

if (lastName.length>0)

{

wholeName=[wholeName stringByAppendingString:lastName];

}

else{

wholeName=@"未知联系人";

}

}

CFIndex index = ABMultiValueGetIndexForIdentifier(valuesRef,identifier);

NSString *value = (__bridge NSString *)ABMultiValueCopyValueAtIndex(valuesRef,index);

[self dismissViewControllerAnimated:YES completion:^{

if(value.length!=0||wholeName.length!=0)

{

//一般读取过来的号码会是短线连接格式,下面方法可以去掉号码横杠

NSArray *NBArr=[value componentsSeparatedByString:@"-"];

NSString *finalyNB=@"";

for (int i=0; i<NBArr.count; i++) {

finalyNB=[finalyNB stringByAppendingString:[NBArr objectAtIndex:i]];

}

    NSLog(@"%@,%@",wholeName,finalyNB);

}

}];

}

转载于:https://www.cnblogs.com/pengStyle/p/5013405.html

iOS读取通讯录获取好友通讯录信息[名字(姓+名字),手机号码(多个号码)等]...相关推荐

  1. IOS swift开发——获取设备定位信息

    作为GIS开发人员,学习任何Android或者swift开发语言,可能第一时间想到的就是获取设备的定位信息.这里就来简述一下,我使用swift获取IOS定位信息的过程. 目录 添加后台定位能力 模拟器 ...

  2. Python爬取微信好友的信息

    最近在学习python的过程中发现了一些比较好玩的东西----------爬取微信好友的信息,并可以制作一些酷炫的效果,比如:统计微信好友男女比例.实现图灵机器人自动回复消息.抓取好友头像并拼接成图. ...

  3. PC微信逆向:使用HOOK获取好友列表和群列表

    文章目录 获取好友列表的切入点 定位查询好友信息的函数 定位微信号的地址 一次错误的尝试 再次查找目标函数 成功定位获取好友信息的函数 定位获取好友列表的函数 示例代码 实际效果 预告 获取好友列表目 ...

  4. 关于IOS获取本地通讯录信息(包含iOS9.0前后)

    在ios开发当中,获取用户本地的通讯录功能愈加频繁的出现,七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能(俗称"种子用户功能",太可怕了).对此七两总结了自己使用本 ...

  5. IOS获取系统通讯录联系人信息

    2019独角兽企业重金招聘Python工程师标准>>> IOS获取系统通讯录联系人信息 一.权限注册 随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统 ...

  6. ios 简书 获取通讯录信息_iOS9以后获取手机通讯录

    一.iOS 9 以前的通讯录框架 AddressBookUI框架:提供了联系人列表界面.联系人详情界面.添加联系人界面等,一般用于选择联系人. AddressBook 框架:纯 C 语言的 API,仅 ...

  7. ios 简书 获取通讯录信息_iOS-授权获取通讯录

    - (void)getContact{ CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusF ...

  8. iOS调用系统通讯录获取姓名电话号码

    iOS调用系统通讯录获取姓名电话号码 (iOS 8.0 Xcode6.3可以使用) 1.导入头文件. #import <AddressBook/AddressBook.h> #import ...

  9. 获取手机通讯录加好友

    获取手机通讯录加好友 工作用到的在app访问通讯录,获取好友信息,发邀请给好友,请求加好友, 类似微信的通讯录加好友效果,简单贴一些代码. xml布局: <span style="fo ...

最新文章

  1. Shell脚本示例代码
  2. Git--团队开发必备神器
  3. 数据库系列之数据管理(插入数据)
  4. AI评委引热议,阿里巴巴表示:AI不会取代工程师
  5. python手机版-手机版python
  6. 数据挖掘-二手车价格预测 Task04:建模调参
  7. ChinaDDoS BGP 流量牵引二层VLAN回注配置
  8. java局域网聊天博客,java swing+socket+mysql实现多个客户端局域网聊天
  9. 用AutoIt写网页外挂系列之 开心网的X世界网页游戏自动送免费礼物
  10. 瀑布流插件WookMark
  11. js页面打印去掉页眉页脚
  12. 群发邮件软件怎么发,教你邮箱群发邮件小技巧
  13. YOLOv3 代码详解(2) —— 数据处理 dataset.py解析:输入图片增强、制作模型的每层输出的标签
  14. input的disabled属性
  15. Xilinx基于PCIE的部分重配置实现(一)
  16. 修复XAMPP安装过程中 因端口80被占用 Apache无法启动的问题
  17. 北大SQL数据库视频教程
  18. 英语水平不强,如何写出高质量英文论文?五个英语写作辅助和润色软件!
  19. 改变DataGridView中的DataGridViewButtonCell单元格的背景色.
  20. read( )函数注意事项与不足

热门文章

  1. 【原始图像】对数及对比度扩展变换
  2. 【matlab】三维网格曲面图(mesh的用法)
  3. Canvas 超详细
  4. tab weui 页面切换_weui tabbar 到底怎么用啊?tab页面为什么不能切换?
  5. hosts ip 指向ip_不同网段共享打印机?不同IP段怎么共享打印机?
  6. 详解深度学习框架制造原理
  7. java二次方程式答案_二次方程式Java?
  8. swift取代python_为什么Swift和Python要抛弃++\--?
  9. pytorch之expand和repeat
  10. FT计算机系统,芯片CP/FT测试的基本概念理解