此文主要记录系统通讯录的用法,主要自我归纳,方便查询,参考文献很详细,不做赘述,主要2部分内容:
- 调起系统通讯录;
- 读取系统通讯录的数据;
一、调起系统通讯录
参考文献 : https://www.cnblogs.com/devfan/p/8383653.html
首先必不可少的权限判断,此处忽略,↓ 直接贴代码:
// S1: #import <ContactsUI/ContactsUI.h>
// S2: 遵循协议<CNContactPickerDelegate>
// S3:页面拉起
// S4:协议方法实现
/// 打开系统通讯录
CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init];
contactPicker.delegate = self;
contactPicker.displayedPropertyKeys = @[CNContactPhoneNumbersKey];
[self presentViewController:contactPicker animated:YES completion:nil];
#pragma mark - CNContactPickerDelegate 进入系统通讯录页面 --
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty {
CNPhoneNumber *phoneNumber = (CNPhoneNumber *)contactProperty.value;
[self dismissViewControllerAnimated:YES completion:^{
/// 联系人
NSString *name = [NSString stringWithFormat:@"%@%@",contactProperty.contact.familyName,contactProperty.contact.givenName];
/// 电话
CNLabeledValue *phoneLabeledValue = [contactProperty.contact.phoneNumbers firstObject];
CNPhoneNumber *phoneValue = phoneLabeledValue.value;
NSString *phone = phoneValue.stringValue;
/// 邮箱
CNLabeledValue *emailLabledValue = [contactProperty.contact.emailAddresses firstObject];
NSString *email = emailLabledValue.value;
}];
}
/**
获取更多信息,点击contact属性定义进去,就可以看到你想要的数据定义,如果是NSArray格式,注意对应数据类型。
*/
二、获取通讯录数据信息
参考文献:
iOS9以前: https://www.shuzhiduo.com/A/ke5jegkgJr/
iOS9以后:https://www.jianshu.com/p/fadeb914d1ed