如何以编程方式从 iOS 地址簿中批量删除自定义标签?

How to batch remove custom labels from iOS AddressBook programmatically?

我想以编程方式从地址簿中批量删除自定义标签。但是没有publicAPI。谁有更好的解决方法,谢谢!

假设您谈论的是与电子邮件、电话和地址相关联的标签,您可能会

  1. 使用 AddressBook.framework;
  2. 获取联系人列表(例如ABAddressBookCopyArrayOfAllPeople);
  3. 遍历联系人;
  4. 使用 ABRecordCopyValue 获取与您感兴趣的多值属性关联的 ABMultiValueRef(例如,可能 kABPersonEmailPropertykABPersonAddressProperty and/or kABPersonPhoneProperty).
  5. 使用ABMultiValueGetCount获取标签数;
  6. 使用ABMultiValueCopyLabelAtIndex获取实际标签;
  7. 将这些标签与 kABHomeLabelkABWorkLabelkABOtherLabel 进行比较;和
  8. 如果标签不匹配,则对该记录的特定多值标签做任何您想做的事。

有关详细信息,请参阅 Address Book Programming Guide for iOS: Direct Interaction: Programmatically Accessing the Database as well as the Address Book Framework Reference for iOS