2013-06-04 8 views
15

La mia app carica i contatti e, in futuro, dovrà aggiornarli. Sta usando il ABRecordID un modo affidabile per identificare le persone, o è possibile per un nuovo record ottenere l'ID di un record cancellato?ABRecordID è un modo affidabile per identificare contatti univoci?

Per ottimizzare i caricamenti, vorrei caricare solo i record che sono stati modificati o creati dall'ultimo caricamento. Attualmente sto memorizzando una copia dei contatti della persona utilizzando i dati principali. Mi piacerebbe ridurre l'impronta della mia app e accelerare i tempi di esecuzione della scansione attraverso la rubrica della persona alla ricerca di nuovi contatti modificati e limitare l'importo che deve essere caricato. Dopo aver analizzato le rubriche di alcune persone, il numero di contatti può variare da 30 a circa 30.000. Occuparsi di 30.000 contatti è un incubo.

risposta

16

Un nuovo record non otterrà un ID precedentemente associato a un record eliminato. ABRecordID s sono unici al riguardo. Ma non sono necessariamente coerenti nel tempo, un paio di cose possono far cambiare l'ID. L'utente che attiva o disattiva iCloud può causare la modifica dell'ID, così come il ripristino del dispositivo da iTunes. Detto questo, ABRecordID è ancora la soluzione migliore per ottenere un ID univoco per un contatto. Hai solo bisogno di ricontrollare che le cose si allineino quando lo si usa. Apple ha suggerisce la seguente nell'indirizzo guida di programmazione libro:

Il metodo consigliato per mantenere un riferimento a lungo termine per un particolare record è per memorizzare il nome e cognome, o di un hash del primo e ultima nome, oltre all'identificatore. Quando cerchi un record con l'ID , confronta il nome del record con il nome memorizzato. Se non corrispondono a corrispondere, utilizzare il nome memorizzato per trovare il record e memorizzare il nuovo ID per il record.

+1

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