苹果自带的通讯录

//导入通讯录的库头文件
//AddressBook提供了通讯录的所有数据
#import <AddressBook/AddressBook.h>
//AddressBookUI提供了通讯录的界面,基于AddressBook
#import <AddressBookUI/AddressBookUI.h>
- (IBAction)showAddressBookClick:(UIButton *)sender
{//ABPeoplePickerNavigationController : UINavigationController//ABPeoplePickerNavigationController  联系人选择器;  创建时不需要指定根视图控制器ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc]init];//在通讯录弹出present之前设置代理;  peoplePickerDelegate 联系人选择器代理,设置代理就可以得到反馈picker.peoplePickerDelegate = self;[self presentViewController:picker animated:YES completion:nil];[picker release];
}//iOS8(Xcode6)之后废弃不用//用户点击cancel按钮时调用
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{NSLog(@"点击了取消按钮");[self dismissViewControllerAnimated:peoplePicker completion:nil];
}//用户点击某个联系人时是否进入下一页
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{NSLog(@"选择了联系人");return YES;
}//用户选择了某个联系人的某个资料时调用
//参数person  表示选择的联系人,这个参数中包含了这个联系人的所有资料
//参数property  表示用户选择的资料类型(电话、生日、地址等)
//参数identifier  表示用户选择的资料的索引值(例如:选择了第几个电话)
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{NSLog(@"选择了电话或者其他资料");//ABRecordCopyCompositeName 获得联系人的姓名//CFStringRef 一个结构体,是NSString的属性部分,在非ARC下可以通过强制转换;ARC下用(__bridge)进行桥接转换NSString *name = (NSString *)ABRecordCopyCompositeName(person);_nameLabel.text = name;CFRelease(name);//获取电话//如果用户选择了电话,再往下执行if (property == kABPersonPhoneProperty){//ABRecordCopyValue 获得用户所选择的资料集合(电话、生日等)ABMultiValueRef ref = ABRecordCopyValue(person, property);//ABMultiValueGetIndexForIdentifier  获得用户所选择的资料的索引unsigned long index = ABMultiValueGetIndexForIdentifier(ref, identifier);//ABMultiValueCopyValueAtIndex  根据索引,从资料集合中获得用户所选择的资料NSString *phone = ABMultiValueCopyValueAtIndex(ref, index);//处理一下电话号码,让其为纯数字_phoneLabel.text = [self handlePhoneString:phone];CFRelease(phone);CFRelease(ref);}return YES;
}//判断电话号码是否为纯数字
- (NSString *)handlePhoneString:(NSString *)phonestring
{NSMutableString *mString = [NSMutableString stringWithString:phonestring];//containsString  判断一个字符串是否包含另一个字符串//[@"1234567890" containsString:string];//NSCharacterSet 字符集//characterSetWithCharactersInString  生成一个数字字符集NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];//遍历数组、字符串中元素,倒着遍历,正着遍历当连着几个非法字符时,会隔过去一些//或者在得到一个非法字符删除后将其i值-1//i--;for (NSInteger i = mString.length - 1; i>=0; i--){//substringWithRange截取字符串中的某一部分//NSMakeRange(i, 1) 从第i个位置,取1个NSString *string = [mString substringWithRange:NSMakeRange(i, 1)];//        NSRange NSMakeRange (//                             NSUInteger loc,//                             NSUInteger len//                             );//        loc 为location缩写,len 表示长度。作用:在loc指定得位置开始往后获取len长度个得元素。//输入字符的字符集NSCharacterSet *chSet = [NSCharacterSet characterSetWithCharactersInString:string];//isSupersetOfSet  判断输入字符的集合是否是数字字符集的子集if ([set isSupersetOfSet:chSet]){//是数字}else{//不是数字 , 将其删除[mString deleteCharactersInRange:NSMakeRange(i, 1)];//或者在得到一个非法字符删除后将其i值-1//i--;}}return mString;
}

效果如下:

通讯录AddressBook相关推荐

  1. 手机通讯录AddressBook的使用

    通过使用两个框架:AddressBook.framework和AddressBookUI.framework,我们可以在程序中访问并显示iPhone数据库中的联系人信息. 1.AddressBookU ...

  2. 基于C++实现(控制台+界面)通讯录管理系统【100010012】

    个人通讯录管理系统 问题描述: 主要内容: 个人通讯录是记录了同学(包含一起上学的学校名称).同事(包含共事的单位名称).朋友(包含认识的地点).亲戚(包含称呼)等与本人有关人员的数据集. 具体要求: ...

  3. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总...

    iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...

  4. 短信、邮件、通讯录、蓝牙、社交、Game Center、应用内购买、iClould、Passbook

    来源于:http://www.cocoachina.com/ios/20150129/11068.html iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会 ...

  5. 基于C++和QT实现的个人通讯录管理系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85722043 资源下载地址:https://download.csdn.net/downl ...

  6. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook详解

    代码改变世界 Posts - 69, Articles - 0, Comments - 812 Cnblogs Dashboard Login Home Contact Gallery RSS Ken ...

  7. iOS开发系列--通讯录、蓝牙、

    iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...

  8. 微信小程序查看通讯录 联系人

    通讯录 addressBook() {//通讯录操作 wx.chooseContact({ success: function (res) { // console.log(res, '成功回调') ...

  9. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总,icloudpassbook...

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  10. iOS通讯录,蓝牙,内购等开发系列

    –系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系 ...

最新文章

  1. TCGAbiolinks包下载TCGA数据
  2. 研究.jpg图片马赛克问题
  3. 两次备考信息系统项目管理师长篇心路历程附考试技巧
  4. python os.walk
  5. [SharePoint][SharePoint2013循序渐进]SPS2013简介
  6. 第八十七期:爬了知乎“沙雕问题”,笑死个人!
  7. hdu max sum
  8. php自定义目录,ThinkPHP中自定义目录结构的设置方法_php技巧
  9. 【java】统计英文文本中某些字母出现的次数
  10. python项目实战:实现数据可视化三维拟合
  11. Java分布式面试题及答案,附架构师必备技术详解
  12. ActiveSync同步使用方法
  13. 贝叶斯因果网络_因果关系和贝叶斯网络
  14. 三维重建(知识点详细解读、主要流程)
  15. css3中自适应边框图片运用
  16. con 元器件符号_PROTEUS中元器件符号
  17. 解决Failing package is:mysql-community-icu-data-files-8.0.29-1.el7.x86_64 GPG Keys are configured as..
  18. 读书笔记-别做正常的傻瓜
  19. 使用python读取和分析fasta文件
  20. 2023年国家留学基金委(CSC)有关国别申请、派出注意事项

热门文章

  1. winform 显示分隔控件_Winform分页控件之纯分页显示处理
  2. php jwt payload,php实现JWT(json web token)鉴权实例详解
  3. Android 如何获取运行内存和总运行内存等
  4. 利用135端口的思路
  5. 拳皇觉醒服务器维护,拳皇全明星拳魂觉醒手游9月26日更新公告_拳皇全明星拳魂觉醒9月26日更新了什么_玩游戏网...
  6. NYOJ-366:D的小L
  7. lisp实心圆点怎么画_cad中怎么样画实心圆点
  8. 多多客api_订多多提供API
  9. python编写自定义函数计算约登值(约登指数、Youden Index)、寻找最佳阈值(threshold、cutoff)、以及最佳阈值对应的ROC曲线中的坐标点
  10. uniapp 跳转到外部链接