iOS编辑系统通讯录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youyou_56/article/details/79263050

有时会用到需要修改系统通讯录,百度了一下可以用CNContactStore进行操作,不过好像是有版本限制

//查询系统通讯录里的某个联系人
CNContactStore * stroe = [[CNContactStore alloc]init];
//检索条件,检索所有名字中有‘’拉拉“的联系人
NSPredicate * predicate = [CNContact predicateForContactsMatchingName:@”拉拉“];

//得到的联系人 (说明:keysToFetch:想要修改什么属性就必须设置什么属性,否则程序崩溃)
NSArray * contacts = [stroe unifiedContactsMatchingPredicate:predicate keysToFetch:@[CNContactGivenNameKey,CNContactFamilyNameKey,CNContactOrganizationNameKey,CNContactThumbnailImageDataKey,CNContactImageDataKey,CNContactNoteKey,CNContactPhoneNumbersKey] error:nil];

CNMutableContact *contact2 = [contacts[0] mutableCopy];
contact2.imageData = UIImagePNGRepresentation(_headImage);//修改头像
contact2.givenName = _nameField.text;//修改名字
contact2.familyName = _nameField.text;//修改姓
contact2.note = _remarkFiled.text;//修改备注
//处理要修改的号码
NSMutableArray *numbers = [NSMutableArray arrayWithCapacity:10];
//修改写入多个号码
for (PrefileViewModel *model in _dataMarr) {
if (model.value.length !=0) {
CNLabeledValue *phoneNumber = [CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberMobile value:[CNPhoneNumber phoneNumberWithStringValue:model.value]];
[numbers addObject:phoneNumber];
}
}
contact2.phoneNumbers = numbers;//修改号码
CNSaveRequest * saveRequest = [[CNSaveRequest alloc]init];
[saveRequest updateContact:contact2];
[stroe executeSaveRequest:saveRequest error:nil];

//新建
CNContactStore * stroe = [[CNContactStore alloc]init];
CNMutableContact *newContact = [[CNMutableContact alloc]init]; newContact.givenName = _nameField.text;
newContact.note = _remarkFiled.text;
NSMutableArray *numbers = [NSMutableArray arrayWithCapacity:10];
for (PrefileViewModel *model in _dataMarr) {
if (model.value.length !=0) {
CNLabeledValue *phoneNumber = [CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberMobile value:[CNPhoneNumber phoneNumberWithStringValue:model.value]];
[numbers addObject:phoneNumber];
}
}
newContact.phoneNumbers = numbers;
newContact.imageData = UIImagePNGRepresentation(_headImage);
CNSaveRequest * saveRequest = [[CNSaveRequest alloc]init];
[saveRequest addContact:newContact toContainerWithIdentifier:nil];
[stroe executeSaveRequest:saveRequest error:nil];

//获取通讯录联系人的头像 (contact2同上)
if ([contact2 isKeyAvailable:CNContactThumbnailImageDataKey])
{

        NSData * thumImageData = contact2.thumbnailImageData;

        UIImage *image= [UIImage imageWithData:thumImageData];

        if (thumImageData !=NULL) {

            _headerImageView.image = image;
        }



    }

//获取手机号码
NSArray *numbers = contact2.phoneNumbers;
//获取备注
if ([contact2 isKeyAvailable:CNContactNoteKey])
{
NSString * noteString= contact2.note;

        if (noteString.length !=0) {

            _remarkFiled.text = noteString;
        }

    }

猜你喜欢

转载自blog.csdn.net/youyou_56/article/details/79263050