如何从ABAddressBook中检索所有联系人而不重复

时间:2012-04-02 07:11:17

标签: iphone ios ipad abaddressbook

要获取我正在使用ABAddressBookCopyArrayOfAllPeople方法的所有联系人,但是,此方法会返回所有带有重复项的联系人:在“联系人”应用中,我看到几乎每个联系人都有链接卡(它告诉我我有两个同样的联系人来自iCloud,另一个来自我的iPad)。正如我在这个原因中看到ABAddressBookCopyArrayOfAllPeople方法返回重复的联系人 如何从ABAddressBook获取所有联系人没有重复?

3 个答案:

答案 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的联系人。这不是一个非常漂亮的解决方案,但它对我有用。