要获取我正在使用ABAddressBookCopyArrayOfAllPeople
方法的所有联系人,但是,此方法会返回所有带有重复项的联系人:在“联系人”应用中,我看到几乎每个联系人都有链接卡(它告诉我我有两个同样的联系人来自iCloud,另一个来自我的iPad)。正如我在这个原因中看到ABAddressBookCopyArrayOfAllPeople
方法返回重复的联系人
如何从ABAddressBook获取所有联系人没有重复?
答案 0 :(得分:2)
也许ABContactHelper可以提供帮助?!
答案 1 :(得分:1)
从内存中我认为每个用户只返回一条记录:
ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
addressBookArray = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByLastName);
我用它似乎工作了。虽然您必须跳过链接的联系人以获取有关用户的所有详细信息。
完成后请记得CF发布来源和地址簿。
答案 2 :(得分:0)
我遇到了同样的问题,但没有找到另一种解决方案,那就是手动双向链接复制删除过程:
两个级联循环(ordo n ^ 2),它们面对ABAddressBookCopyArrayOfAllPeople
返回的每个联系对的记录ID。然后,我只在最终列表中添加与较小联系人ID的联系人。这不是一个非常漂亮的解决方案,但它对我有用。