我的代码是这样的,我将数组传递给CFArrayRef
,然后删除联系人,但代码不起作用:
CFArrayRef arrayRef = (__bridge CFArrayRef)multipleSeleted;
ABAddressBookRef addressbook = ABAddressBookCreate();
if (arrayRef != NULL) {
int count = CFArrayGetCount(arrayRef);
for (int i = 0; i < count; ++i){
ABRecordRef contact = CFArrayGetValueAtIndex(arrayRef, i);
ABAddressBookRemoveRecord(addressbook, contact, nil);
}
}
你可以这样做
我已经为你写好了方法,只需传递要删除的联系人数组
我的代码:
-(void)removeSlectedContactList:(CFArrayRef)arrContacts {
ABAddressBookRef addressbook = ABAddressBookCreate();
if (arrContacts)
{
int count = CFArrayGetCount(arrContacts);
for (int i = 0; i < count; ++i)
{
ABRecordRef contact = CFArrayGetValueAtIndex(arrContacts, i);
ABAddressBookRemoveRecord(addressbook, contact, nil);
}
}
ABAddressBookSave(addressbook, nil);
CFRelease(addressbook);
}
如果你有人名,那么循环你的数组得到重复的用户列表,然后删除
下面是示例代码:NSString *searchName = @"NameOfUser";
ABAddressBookRef addressBook = ABAddressBookCreate();
CFStringRef nameRef = (__bridge CFStringRef) searchName;
CFArrayRef arrSearchUsers = ABAddressBookCopyPeopleWithName(addressbook, nameRef);
[self removeSlectedContactList:arrSearchUsers];
以上代码从内存中的Array列表中删除记录。要从地址簿中删除您需要在这行之后调用保存函数ABAddressBookRemoveRecord(addressbook, contact, nil)
;
CFErrorRef error=NULL;
ABAddressBookSave(addressBook,&error);
你可以尝试使用RHAddressBook库,我不建议你使用C
风格的api,它很难工作。