我使用以下代码从我的地址簿中删除联系人。 (在iOS 5.0上)。但它每次都在ABAddressBookSave(addressBook, NULL);
给我EXC_BAD_ACCESS。我选择了NSZombieEnalbeld,但它仍然没有给我明确的错误。
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);
出了什么问题?
答案 0 :(得分:4)
问题在于这一行:
ABRecordRef person = ABAddressBookCopyArrayOfAllSources(addressBook);
ABAddressBookCopyArrayOfAllSources
返回CFArray
和不 ABRecord
如果您想从地址簿中删除某个人,您需要获得以下内容:
ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, recordID);
其中recordID是您要删除的人的ID(您需要获取此ID)。
关于如何从地址簿中获取人员的更多信息,您可以查看at this SO response