2012-04-02 20 views
3

Um alle Kontakte zu bekommen Ich benutze ABAddressBookCopyArrayOfAllPeople Methode, aber diese Methode alle Kontakte mit Duplikaten zurück: in "Kontakte" App sah ich, dass fast alle meine Kontakte Karte verbunden hat (es ist Show ich, dass ich zwei gleiche Kontakte habe, eine von iCloud und eine andere von meinem iPad). Wie ich sehe in diesem Grund ABAddressBookCopyArrayOfAllPeople Methode doppelte Kontakte zurückgeben.
Wie erhalten Sie alle Kontakte von ABAddressBook ohne Duplikat?Wie alle Kontakte von ABAddressBook ohne Duplikate

Antwort

0

Ich hatte das gleiche Problem und eine andere Lösung dann den manuellen bidirektionalen-link-Duplikat-Entfernungsprozess nicht gefunden:

Zwei kaskadierte Zyklen (ordo n^2), konfrontiert die Datensatz-ID jedes Kontaktpaar das wurde von ABAddressBookCopyArrayOfAllPeople zurückgegeben. Dann füge ich nur noch den Kontakt mit der kleineren Kontakt ID zur endgültigen Liste hinzu. Es ist keine sehr schöne Lösung, aber es funktioniert für mich.

1

Aus dem Gedächtnis ich denke, das gibt nur einen Datensatz pro Benutzer:

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

ich verwendet habe es eine es scheint zu funktionieren. Sie müssen zwar durch die verknüpften Kontakte springen, um alle Details zu einem Benutzer zu erhalten.

Remember to CFRelease Quelle und AdresseBook, wenn Sie fertig sind.

Verwandte Themen