实用知识:<AddressBookUI/AddressBookUI.h>(获取手机通讯录)
来源:互联网 发布:斯隆女士原型知乎 编辑:程序博客网 时间:2024/06/15 16:09
#import "ViewController.h"// 提供联系人查询, 添加的UI界面#import <AddressBookUI/AddressBookUI.h>@interface ViewController () <UINavigationControllerDelegate, ABPeoplePickerNavigationControllerDelegate>// 联系人查询控制器@property (strong, nonatomic) ABPeoplePickerNavigationController *peoplePicker;@end@implementation ViewController- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // 1. 创建 self.peoplePicker = [[ABPeoplePickerNavigationController alloc] init]; // 2. 配置// self.peoplePicker.delegate = self; // 注意: 代理属性是peoplePickerDelegate, delegate属性是从UINavigationController继承过来的 self.peoplePicker.peoplePickerDelegate = self; // 3. 弹出 [self presentViewController:self.peoplePicker animated:YES completion:nil];}#pragma mark - ABPeoplePickerNavigationControllerDelegate// 点击了右上解的取消按钮时触发- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{ NSLog(@"取消");}// 选中了某个联系人时触发- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person{ // 如果实现了该代理方法, 那么不会进入联系人详情界面 NSLog(@"选中了联系人"); /*================= 获取联系人的姓名 =================*/ // ABRecordRef : 表示通讯录数据库当中的一条记录 // C 语言的方法通过以自己为方法名开头, 通常第一个参数都Ref是填自己 // person 实际上是 ABPerson, Property ID 定义在 ABPerson 里面 // 凡是create, retain, copy, 都需要手动的去Release // CFTypeRef 是通用类型, 类似于 id CFStringRef firstname = ABRecordCopyValue(person, kABPersonFirstNameProperty); // 名 CFStringRef lastname = ABRecordCopyValue(person, kABPersonLastNameProperty); // 姓 /*================= CoreFoundation 与 Foundation 之间的转换 =================*/ // 方式1: 直接转换, 不转移对象所有权 (负责retainCount引用计数)// NSString *firstNameString = (__bridge NSString *)(f\irstname);// NSLog(@"%@", firstNameString);// // CFRelease(firstname); // 方式2: 将非OC转换成OC, 转移对象所有权 (ARC)// NSString *firstNameString = CFBridgingRelease(firstname); // 两者等价 NSString *firstNameString = (__bridge_transfer NSString *)firstname; NSString *lastNameString = CFBridgingRelease(lastname); NSLog(@"%@ : %@", firstNameString, lastNameString); /*================= 获取联系人电话 =================*/ // kABPersonPhoneProperty 得到的是 ABMultiValueRef 的值 // ABMultiValueRef 可以理解成是一个包装 字典(Label - Value) 的 数组(多个电话) ABMultiValueRef multiValue = ABRecordCopyValue(person, kABPersonPhoneProperty); // 获取MultiValue的值的个数 CFIndex index = ABMultiValueGetCount(multiValue); for (CFIndex i = 0; i < index; i++) { // 获取每一个索引对应的label与value CFStringRef label = ABMultiValueCopyLabelAtIndex(multiValue, i); // 电话号码也是 CFStringRef CFStringRef value = ABMultiValueCopyValueAtIndex(multiValue, i); NSLog(@"%@ : %@", CFBridgingRelease(label), CFBridgingRelease(value)); } CFRelease(multiValue);}@end
0 0
- 实用知识:<AddressBookUI/AddressBookUI.h>(获取手机通讯录)
- 获取通讯录(AddressBookUI框架)
- AddressBookUI获取通讯录
- ios通讯录------AddressBookUI
- ios中获取当前手机通讯录信息一、在工程中添加AddressBook.framework和AddressBookUI.framework
- (一〇〇)使用AddressBookUI实现通讯录操作
- AddressBook、AddressBookUI、Contacts、ContactsUI 通讯录操作
- 111 AddressBookUI
- iOS AddressBookUI
- iOS开发------操作通讯录(AddressBook篇)&通讯录UI(AddressBookUI篇)
- 操作通讯录(AddressBook篇)&通讯录UI(AddressBookUI篇)
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- IOS进阶 AddressBook.framework和AddressBookUI.framework访问通讯录
- 手机联系人相关AddressBookUI.Framwork和AddressBook.Framework
- iOS手机联系人相关AddressBookUI.Framwork和AddressBook.Framework
- AddressBookUI.Framwork应用之ABPeoplePickerNavigationController
- 储存版本号
- Swift 2.0 String 与 Int 类型的转换
- hdu——2087剪花布条 ( kmp 和 find用法 )
- c 语言 dll编译与使用
- 设计模式之简单工厂模式
- 实用知识:<AddressBookUI/AddressBookUI.h>(获取手机通讯录)
- 单例模式
- 设置label高度自动,对于已经确定了内容的cell
- 【HUSTOJ】1058: 数字走向III
- stm32f103c8t6移植uCOS Ⅲ出现Error: L6407W,解决方法:内核配置以减小代码规模
- Android 强制弹出输入法后 隐藏不掉或者错乱的问题
- linux基础(9)--找回root密码(身份)&&破解用户密码
- 屏幕分辨率
- 设置label高亮颜色