Cómo recuperar todos los contactos de ABAddressBook sin duplicates

Para get todos los contactos, estoy usando el método ABAddressBookCopyArrayOfAllPeople , pero este método devuelve todos los contactos con duplicates: en la aplicación "Contactos" vi que casi todos mis contactos tienen una tarjeta vinculada (me muestran que tengo dos contactos, uno de iCloud y otro otro de mi iPad). Como veo en esta razón, el método ABAddressBookCopyArrayOfAllPeople devuelve contactos duplicates.
¿Cómo get todos los contactos de ABAddressBook sin duplicates?

Tal vez el ABContactHelper podría ayudar?

De la memory creo que esto solo devuelve un logging por usuario:

  ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook); addressBookArray = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByLastName); 

Lo he usado y parece que funciona. Aunque tendrá que saltar a través de los contactos vinculados para get todos los detalles sobre un usuario.

Recuerde a CFRelease source y addressBook cuando termine.

Tuve el mismo problema y no encontré otra solución, luego el process manual de eliminación bidireccional-enlace-duplicado:

Dos ciclos en cascada (ordo n ^ 2) que confronta el ID de logging de cada par de contacto que fue devuelto por ABAddressBookCopyArrayOfAllPeople . Luego agrego a la list final solo el contacto con el ID de contacto más pequeño . No es una solución muy bonita, pero funciona para mí.