Lidar com contatos duplicados devido a cartões vinculados na API do Catálogo de Endereços do iOS

Alguns usuários beta demeu próximo aplicativo estão relatando que a lista de contatos contém muitos registros duplicados. Estou usando o resultado deABAddressBookCopyArrayOfAllPeople como a fonte de dados para a minha visão de tabela personalizada de contatos, e me deixa confuso que os resultados são diferentes do aplicativo 'Contatos' do iPhone.

Ao olhar mais de perto o aplicativo Contatos, parece que as duplicatas se originam de entradas com "Cartões Vinculados". As capturas de tela abaixo foram ofuscadas um pouco, mas como você vê no meu aplicativo na extremidade direita, "Celine" aparece duas vezes, enquanto no aplicativo Contatos, à esquerda, há apenas uma "Celine". Se você clicar na linha desse único contato, receberá um cartão "Informações unificadas" com dois "Cartões vinculados"(como mostrado no centro, eu não usei os detalhes de contato da Celine porque eles não cabiam em uma tela):

As questões em torno dos "Cartões Vinculados"bastante a poucos tópicos emFóruns da Apple para os usuários finais, mas além do fato de que muitos apontam para umPágina de suporte 404, Não posso realisticamente corrigir os catálogos de endereços dos usuários do meu aplicativo. Eu prefiro muito mais lidar com isso de forma elegante e sem incomodar o usuário. Para piorar, parece que não sou o único com esse problema, já queO WhatsApp está mostrando a mesma lista que contém contatos duplicados.

Só para ter clareza sobre as origens dos contatos duplicados, não estou armazenando, armazenando em cache ou tentando ser inteligente sobre o arrayABAddressBookCopyArrayOfAllPeople retorna. Portanto, os registros duplicados vêm diretamente da chamada da API.

Alguém sabe como lidar ou detectar esses cartões vinculados, impedindo a exibição de registros duplicados? O aplicativo Contatos da Apple faz isso, como o resto de nós também pode fazer isso?

ATUALIZAÇÃO: Eu escrevi uma biblioteca e coloquei no Cocoapods para resolver o problema em questão. Veja minha resposta abaixo

questionAnswers(5)

yourAnswerToTheQuestion