【问题标题】:How to delete record in iPhone address book using ABAddressBook?如何使用 ABAddressBook 删除 iPhone 通讯录中的记录?
【发布时间】:2010-11-21 10:09:43
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: iphone objective-c ios cocoa-touch abaddressbook


    【解决方案1】:

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

    https://github.com/shrtlist/ABDelete

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你说我已经完成了第一部分,所以你的意思是说我应该看看 ABAddressBookUI.h 文件
      • 你可以看看ABAddressBookUI.framework,它是另一个框架。但是,我记得你想要的东西需要手动实现。如果您想删除 ABRecordRef 的属性,ABAddressBookUI 将成为您的朋友。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-07-14
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-08
        • 2013-04-03
        相关资源
        最近更新 更多