在ABAddressBookSave上获取EXC_BAD_ACCESS

时间:2013-03-22 10:29:05

标签: ios iphone exc-bad-access addressbook

我使用以下代码从我的地址簿中删除联系人。 (在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);

出了什么问题?

1 个答案:

答案 0 :(得分:4)

问题在于这一行:

ABRecordRef person = ABAddressBookCopyArrayOfAllSources(addressBook);

ABAddressBookCopyArrayOfAllSources返回CFArray ABRecord

如果您想从地址簿中删除某个人,您需要获得以下内容:

ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, recordID);

其中recordID是您要删除的人的ID(您需要获取此ID)。

关于如何从地址簿中获取人员的更多信息,您可以查看at this SO response