2016-09-27 40 views
1

刪除多個聯繫人是這樣的,我通過數組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); 
     } 
} 
+0

您想從設備聯繫人中刪除聯繫人嗎?還是從陣列? – Janmenjaya

+0

從設備上刪除 – iOS

+0

[我如何從主AddressBook中刪除聯繫人,當我刪除objective-c中的特定組時?](http://stackoverflow.com/questions/35569682/how-can-i-delete-當我刪除特定組中的代碼時 – Lion

回答

1

你可以做這樣

我已經寫了你的方法,只是通過觸點陣列將被刪除

我的代碼:

-(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]; 
+0

我傳遞給CFArrayRef,因爲我傳遞了NSMutable數組,導致錯誤在ABAddressBookSave(addressbook,nil); – iOS

+0

不,您需要傳遞CFArray。我想你有那些重複聯繫人的名單。否則你的數組中有什麼? – Janmenjaya

+0

我有我想要刪除的數組上的用戶的名稱 – iOS

0

上面代碼中刪除記錄從數組列表在內存中。爲了從通訊錄中刪除您需要在此行後面調用保存功能ABAddressBookRemoveRecord(addressbook, contact, nil);

CFErrorRef error=NULL; 
ABAddressBookSave(addressBook,&error); 

希望這會有所幫助。

+0

添加此代碼後,出現錯誤EXC_BAD_ACCESS – iOS

0

你可以嘗試使用RHAddressBook庫,我不建議你使用C風格的API,它是很難的工作。