2013-06-04 10 views
15

Meine App Uploads Kontakte, und in Zukunft werden sie aktualisieren. Wird mit dem ABRecordID einem zuverlässigen Weg, um Menschen zu identifizieren, oder ist es möglich, dass ein neuer Datensatz der ID eines gelöschten Datensatz zu erhalten?Ist ABRecordID eine zuverlässige Möglichkeit, eindeutige Kontakte zu identifizieren?

Um Uploads zu optimieren, möchte ich nur die Datensätze hochladen, die seit dem letzten Upload geändert oder erstellt wurden. Ich speichere gerade eine Kopie der Kontakte der Person unter Verwendung von Kerndaten. Ich möchte den Platzbedarf meiner App verringern und die Ausführungszeit des Scans im Adressbuch der Person beschleunigen, indem ich nach geänderten/neuen Kontakten suche und den Betrag, der hochgeladen werden muss, begrenzt. Nach der Analyse der Adressbücher einiger Personen kann die Anzahl der Kontakte zwischen 30 und 30.000 liegen. Der Umgang mit 30.000 Kontakten ist ein Albtraum.

Antwort

16

Ein neuer Datensatz erhält keine ID, die zuvor einem gelöschten Datensatz zugeordnet war. ABRecordID s sind in dieser Hinsicht einzigartig. Aber sie sind nicht notwendigerweise konsistent im Laufe der Zeit, ein paar Dinge können dazu führen, dass sich die ID ändert. Der Benutzer, der iCloud ein- oder ausschaltet, kann dazu führen, dass sich die ID ändert und das Gerät von itunes wiederhergestellt werden kann. Das heißt, ABRecordID ist immer noch Ihre beste Wette, um eine eindeutige ID für einen Kontakt zu erhalten. Sie müssen nur überprüfen, dass die Dinge bei der Verwendung ausgerichtet sind. Apple schlägt vor, die folgenden in dem Buch Programmführer-Adresse:

Der empfohlene Weg, um einen langfristigen Bezug auf einen bestimmten Rekord zu halten, ist es, die Vor- und Nachnamen zu speichern oder einen Hash-Wert der ersten und letzten Name, zusätzlich zum Bezeichner. Wenn Sie einen Datensatz nach ID suchen, vergleichen Sie den Namen des Datensatzes mit Ihrem gespeicherten Namen. Wenn sie nicht übereinstimmen, verwenden Sie den gespeicherten Namen, um den Datensatz zu finden, und speichern Sie die neue ID für den Datensatz.

+1

Referenz: https://developer.apple.com/library/ios/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html – rjobidon