我正在学习通讯录框架,然后我想从 iPhone 通讯录中删除记录。我检查了文档并找到了一个名为 的函数ABAddressBookRemoveRecord
,但我找不到删除记录的方法,例如用户将选择一条记录然后点击删除按钮,然后该记录将被删除。
到目前为止,我所做的只是将我的头撞到文档上,仅此而已。
您能否提供一个链接或示例如何删除通讯录中的记录?
谢谢你!
我正在学习通讯录框架,然后我想从 iPhone 通讯录中删除记录。我检查了文档并找到了一个名为 的函数ABAddressBookRemoveRecord
,但我找不到删除记录的方法,例如用户将选择一条记录然后点击删除按钮,然后该记录将被删除。
到目前为止,我所做的只是将我的头撞到文档上,仅此而已。
您能否提供一个链接或示例如何删除通讯录中的记录?
谢谢你!
当您删除一条记录时ABAddressBookRemoveRecord
,您应该保存最终结果ABAddressBookSave
。如果你想要一个 UIInterface 来删除记录,我认为你需要自己实现。苹果提供的关于联系人的 UI 在ABAddressBookUI framework
.
查看 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);
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.")
}