2013-03-22 77 views
2

我正在使用下面的代碼從我的地址簿中刪除聯繫人。 (在iOS 5.0上)。但它每次在ABAddressBookSave(addressBook, NULL);上給我EXC_BAD_ACCESS。我選擇了NSZombieEnalbeld,但它仍然沒有給我明確的錯誤。在ABAddressBook上獲取EXC_BAD_ACCESS保存

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFErrorRef error = NULL; 

ABRecordRef person = ABAddressBookCopyArrayOfAllSources(addressBook); 

BOOL success = ABAddressBookRemoveRecord(addressBook, person, &error); 

if (success) 
{ 
    BOOL su = ABAddressBookSave(addressBook, NULL); 
    NSLog(@"Removed ----"); 
} 
CFRelease(addressBook); 

怎麼回事?

回答

4

問題是這一行:

ABRecordRef person = ABAddressBookCopyArrayOfAllSources(addressBook); 

ABAddressBookCopyArrayOfAllSources返回CFArrayABRecord

如果你想從地址簿中刪除的人,你需要得到它的參考如:

ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, recordID); 

where recordID,the person id你試圖刪除(你需要獲得這個)。

關於如何從地址簿中獲取人的更多信息,您可以查看一下at this SO response