3

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

到目前为止,我所做的只是将我的头撞到文档上,仅此而已。

您能否提供一个链接或示例如何删除通讯录中的记录?

谢谢你!

4

3 回答 3

3

当您删除一条记录时ABAddressBookRemoveRecord,您应该保存最终结果ABAddressBookSave。如果你想要一个 UIInterface 来删除记录,我认为你需要自己实现。苹果提供的关于联系人的 UI 在ABAddressBookUI framework.

于 2010-11-21T10:20:05.823 回答
3

查看 ABPersonViewController+Delete 类别,它可以在不使用任何私有方法的情况下启用联系人删除:

https://github.com/shrtlist/ABDelete

于 2012-01-06T09:33:41.343 回答
0

目标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);

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.")
        }
于 2017-02-01T12:53:29.857 回答