#import
新增联系人
CNMutableContact * contact = [[CNMutableContact alloc] init];
// 头像
contact.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"avatar"]);
// 设置名字
contact.givenName = @"三";
// 设置姓氏
contact.familyName = @"张";
// 邮箱
CNLabeledValue *homeEmail = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:@"hello@163.com"];
CNLabeledValue *workEmail = [CNLabeledValue labeledValueWithLabel:CNLabelWork value:@"world@163.com"];
contact.emailAddresses = @[homeEmail,workEmail];
// 手机号
contact.phoneNumbers = @[[CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberiPhone value:[CNPhoneNumber phoneNumberWithStringValue:@"12344445555"]]];
// 地址
CNMutablePostalAddress *homeAdress = [[CNMutablePostalAddress alloc] init];
homeAdress.street = @"贝克街";
homeAdress.city = @"伦敦";
homeAdress.state = @"英国";
homeAdress.postalCode = @"221B";
contact.postalAddresses = @[[CNLabeledValue labeledValueWithLabel:CNLabelHome value:homeAdress]];
// 生日
NSDateComponents *birthday = [[NSDateComponents alloc] init];
birthday.day = 7;
birthday.month = 5;
birthday.year = 1992;
contact.birthday = birthday;
// 初始化方法
CNSaveRequest *saveRequest = [[CNSaveRequest alloc] init];
// 添加联系人
[saveRequest addContact:contact toContainerWithIdentifier:nil];
// 写入
CNContactStore *store = [[CNContactStore alloc] init];
[store executeSaveRequest:saveRequest error:nil];
//家庭 CONTACTS_EXTERN NSString * const CNLabelHome NS_AVAILABLE(10_11, 9_0); //工作 CONTACTS_EXTERN NSString * const CNLabelWork NS_AVAILABLE(10_11, 9_0); //学校 CONTACTS_EXTERN NSString * const CNLabelSchool NS_AVAILABLE(10_15, 13_0); //其他 CONTACTS_EXTERN NSString * const CNLabelOther NS_AVAILABLE(10_11, 9_0); // 邮箱地址 CONTACTS_EXTERN NSString * const CNLabelEmailiCloud NS_AVAILABLE(10_11, 9_0); // url地址 CONTACTS_EXTERN NSString * const CNLabelURLAddressHomePage NS_AVAILABLE(10_11, 9_0); // 日期 CONTACTS_EXTERN NSString * const CNLabelDateAnniversary NS_AVAILABLE(10_11, 9_0);
删除联系人CNContactStore *store = [[CNContactStore alloc] init];
//检索条件,检索所有名字中FamilyName包含A的联系人
NSPredicate *predicate = [CNContact predicateForContactsMatchingName:@"A"];
//提取数据
NSArray *contacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:@[CNContactFamilyNameKey] error:nil];
CNSaveRequest *saveRequest = [[CNSaveRequest alloc] init];
for (CNContact *contact in contacts) {
CNMutableContact *contact1 = [contact mutableCopy];
// 删除联系人
[saveRequest deleteContact:contact1];
}
[store executeSaveRequest:saveRequest error:nil];
修改联系人
CNContactStore * store = [[CNContactStore alloc] init];
//检索条件,检索所有名字中有A的联系人
NSPredicate * predicate = [CNContact predicateForContactsMatchingName:@"A"];
//提取数据,要修改的必需先提取出来,放在keysToFetch中提取
NSArray * contacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:@[CNContactGivenNameKey] error:nil];
CNSaveRequest * saveRequest = [[CNSaveRequest alloc] init];
for (CNContact *contact in contacts) {
CNMutableContact *contact1 = [contact mutableCopy];
// 编辑联系人
contact1.givenName = @"B";
[saveRequest updateContact:contact1];
}
[store executeSaveRequest:saveRequest error:nil];
读取联系人
NSMutableArray *array = [NSMutableArray array];
// 获取授权状态
CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
// 判断授权状态,如果不是已经授权,则直接返回
if (status != CNAuthorizationStatusAuthorized) {
return nil;
}
// 创建通信录对象
CNContactStore *store = [[CNContactStore alloc] init];
// 创建获取通信录的请求对象
// 拿到所有打算获取的属性对应的key
NSArray *keys = @[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey];
// 创建CNContactFetchRequest对象
CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:keys];
// 遍历所有的联系人
[store enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
[array addObject:contact];
}];