您的位置:首页 > 移动开发 > IOS开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: