2

以下のコードを使用して、アドレス帳から連絡先を削除しています。(iOS 5.0)。しかし、毎回EXC_BAD_ACCESSを与えてくれます ABAddressBookSave(addressBook, NULL);。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);

何がうまくいかないのですか?

4

1 に答える 1

4

問題は次の行にあります。

ABRecordRef person = ABAddressBookCopyArrayOfAllSources(addressBook);

ABAddressBookCopyArrayOfAllSourcesではなくCFArrayを返しますABRecord

アドレス帳から人を削除したい場合は、次のように参照を取得する必要があります。

ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, recordID);

recordID は、削除しようとしている人の ID です (これを取得する必要があります)。

アドレス帳から人を取得する方法の詳細については、この SO 応答をご覧ください。

于 2013-03-25T10:12:46.407 に答える