如何使用ABAddressBook删除iPhone通讯簿中的记录?

如何使用ABAddressBook删除iPhone通讯簿中的记录?,iphone,objective-c,ios,cocoa-touch,abaddressbook,Iphone,Objective C,Ios,Cocoa Touch,Abaddressbook,我正在学习addressbook框架,然后我想从iPhone通讯录中删除该记录。我查阅了文档,发现了一个名为ABAddressBookRemoveRecord的函数,但我找不到删除记录的方法,比如用户将选择一条记录,然后点击删除按钮,然后记录将被删除 到目前为止,我所做的只是在文件上撞了头,仅此而已 你能给我一个如何删除通讯录中记录的链接或示例吗 谢谢大家! 通过ABAddressBookRemoveRecord删除记录时,应通过ABAddressBookSave保存最终结果。如果您想要一个UI

我正在学习addressbook框架,然后我想从iPhone通讯录中删除该记录。我查阅了文档,发现了一个名为
ABAddressBookRemoveRecord
的函数,但我找不到删除记录的方法,比如用户将选择一条记录,然后点击删除按钮,然后记录将被删除

到目前为止,我所做的只是在文件上撞了头,仅此而已

你能给我一个如何删除通讯录中记录的链接或示例吗


谢谢大家!

通过
ABAddressBookRemoveRecord
删除记录时,应通过
ABAddressBookSave
保存最终结果。如果您想要一个UIInterface来删除记录,我认为您需要自己实现。apple提供的关于联系人的UI位于
ABAddressBookUI框架内

查看ABPersonViewController+Delete类别,该类别允许在不使用任何私人方法的情况下删除联系人:

目标C代码:

ABAddressBookRef addressBook; 
CFErrorRef error = NULL; 
addressBook = ABAddressBookCreate();
ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook,<YOUR 'PERSON' GOES HERE>);
ABAddressBookRemoveRecord(addressBook, (ABRecordRef)person, &error );
if(error !=NULL)
{
    // Handle success

}

ABAddressBookSave(addressBook, NULL);
ABAddressBookRef地址簿;
CFErrorRef error=NULL;
addressBook=ABAddressBookCreate();
ABRecordRef person=ABAddressBookGetPersonWithRecordID(addressBook,);
ABAddressBookRemoveRecord(地址簿,(ABRecordRef)个人和错误);
if(错误!=NULL)
{
//成功
}
ABAddressBookSave(地址簿,空);
Swift代码:

var emptyDictionary: CFDictionaryRef?
        var addressBookRef: ABAddressBookRef?
        var err: Unmanaged<CFErrorRef>? = nil
        var userRecord: ABRecordRef?
        addressBookRef = ABAddressBookCreateWithOptions(emptyDictionary, &err)?.takeRetainedValue()
        userRecord = ABAddressBookGetPersonWithRecordID(addressBookRef, "Record ID of User").takeUnretainedValue()

        ABAddressBookRemoveRecord(addressBookRef, userRecord, &err)
        if err != nil {
            // Handle success
        }

        // Save Address Book changes
        if ABAddressBookHasUnsavedChanges(addressBookRef){
            var err: Unmanaged<CFErrorRef>? = nil
            let savedToAddressBook = ABAddressBookSave(addressBookRef, &err)
            if savedToAddressBook {
                print("Successully saved changes.")
            } else {
                print("Couldn't save changes.")
            }
        } else {
            print("No changes occurred.")
        }
var emptyDictionary:CFDictionaryRef?
var addressBookRef:ABAddressBookRef?
变量错误:非托管?=无
var userRecord:ABRecordRef?
addressBookRef=ABAddressBookCreateWithOptions(emptyDictionary,&err)?。takeRetainedValue()
userRecord=ABAddressBookGetPersonWithRecordID(addressBookRef,“用户的记录ID”)。TakeUnrepainedValue()
ABAddressBookRemoveRecord(addressBookRef、userRecord和err)
如果出错!=零{
//成功
}
//保存通讯簿更改
如果ABAddressBookHasUnsavedChanges(addressBookRef){
变量错误:非托管?=nil
让savedToAddressBook=ABAddressBookSave(addressBookRef,&err)
如果已保存,则加载Dressbook{
打印(“成功保存更改”)
}否则{
打印(“无法保存更改”)
}
}否则{
打印(“未发生任何更改”)
}

ya我已经完成了你说的第一部分,所以你的意思是我应该看看ABAddressBookUI.h文件你可以看看ABAddressBookUI.framework,它是另一个框架。但是,我记得您需要手动实现什么。如果要删除ABRecordRef的属性,则ABAddressBookUI将是您的好友。