如何从地址簿中删除多个联系人



我的代码是这样的,我将数组传递给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,它很难工作。

最新更新