2010-11-21 85 views
3

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

我到目前为止所做的一切都让我对文档感到头痛,这就是全部。

您能否给我一个链接或示例如何删除地址簿中的记录?

谢谢!

回答

3

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

+0

你已经完成了第一部分,所以你的意思是说我应该看看ABAddressBookUI.h文件 – Radix 2010-11-21 10:31:18

+0

你可以看看ABAddressBookUI.framework,它是另一个框架。但是,我记得你想要手动实现的东西。如果你想删除一个ABRecordRef属性,ABAddressBookUI将成为你的朋友。 – AechoLiu 2010-11-22 01:49:02

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.") 
     }