IOS9中联系人对象的使用及增删改查操作的函数封装
2016-05-07 21:00
585 查看
之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下:
// // ViewController.m // IOS9中联系人CNContact的使用 // // Created by mac on 16/5/6. // Copyright © 2016年 mzw. All rights reserved. // #import "ViewController.h" //导入IOS9联系人模型 @import Contacts; @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self getContactList]; [self addOneContactToContactList]; [self deleteOneContactFromContactList]; [self updateOneContectToContactList]; } /** * 读取联系人通讯录 */ -(NSMutableArray*)getContactList{ NSMutableArray *array = [NSMutableArray array]; // 1.获取授权状态 CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]; // 2.判断授权状态,如果不是已经授权,则直接返回 if (status != CNAuthorizationStatusAuthorized) { return nil; } // 3.创建通信录对象 CNContactStore *contactStore = [[CNContactStore alloc] init]; // 4.创建获取通信录的请求对象 // 4.1.拿到所有打算获取的属性对应的key NSArray *keys = @[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey,CNContactImageDataKey]; // 4.2.创建CNContactFetchRequest对象 CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:keys]; // 5.遍历所有的联系人 [contactStore enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) { [array addObject:contact]; } ]; return array; } /** * 删除通讯录中的一位联系人 */ -(void)deleteOneContactFromContactList{ CNContactStore * store = [[CNContactStore alloc]init]; //检索条件,检索所有名字中有zhang的联系人 NSPredicate * predicate = [CNContact predicateForContactsMatchingName:@"W"]; //提取数据 NSArray * contacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:@[CNContactGivenNameKey] error:nil]; CNMutableContact *contact1 = [contacts objectAtIndex:0]; //初始化方法 CNSaveRequest * saveRequest = [[CNSaveRequest alloc]init]; //删除联系人(不行) [saveRequest deleteContact:contact1]; } /** * 修改通讯录中的一位联系人 * 先根据条件生成一个谓词,根据谓词读到联系人,并对联系人进行update */ -(void)updateOneContectToContactList{ CNContactStore * store = [[CNContactStore alloc]init]; //检索条件,检索所有名字中有zhang的联系人 NSPredicate * predicate = [CNContact predicateForContactsMatchingName:@"张"]; //提取数据,要修改的必需先提取出来,放在keysToFetch中提取 NSArray * contacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:@[CNContactGivenNameKey] error:nil]; CNMutableContact * contact1 = [[contacts objectAtIndex:0] mutableCopy]; contact1.givenName = @"heh"; CNSaveRequest * saveRequest = [[CNSaveRequest alloc]init]; [saveRequest updateContact:contact1]; [store executeSaveRequest:saveRequest error:nil]; } /** * 添加一位联系人到通讯录 */ // -(void)addOneContactToContactList{ CNMutableContact * contact = [[CNMutableContact alloc]init]; contact.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"22"]); //设置名字 contact.givenName = @"三强"; //设置姓氏 contact.familyName = @"王"; CNLabeledValue *homeEmail = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:@"316045346@qq.com"]; CNLabeledValue *workEmail =[CNLabeledValue labeledValueWithLabel:CNLabelWork value:@"316045346@qq.com"]; contact.emailAddresses = @[homeEmail,workEmail]; //家庭 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 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); contact.phoneNumbers = @[[CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberiPhone value:[CNPhoneNumber phoneNumberWithStringValue:@"12344312321"]]]; 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]; } @end