¿Hay una propiedad tipo "ID único" para los contactos de la libreta de direcciones?

Estoy haciendo un juego que involucra a los contactos del usuario, pero necesito una forma única de identificar a cada contacto. Esto se debe a que el usuario puede cambiar fácilmente el nombre, número de teléfono u otra propiedad de un contacto determinado. ¿Hay alguna forma de hacer esto?

Puede usar ABRecordGetRecordID() para get la identificación única de un logging. Devuelve un ABRecordID que es un typedef para int32_t .

ABRecordGetRecordID () es la API que puede usar. Sin embargo, la documentation de Apple indica algunos puntos notables sobre el ABRecordID devuelto por esta API.

Cada logging en la database de la Libreta de direcciones tiene un identificador de logging único. Este identificador siempre se refiere al mismo logging, a less que se borre ese logging o se restablezcan los datos. Los identificadores de logging se pueden pasar con security entre subprocesss. No se garantiza que sigan siendo los mismos en todos los dispositivos.

El método sugerido según las directrices de Apple es

La forma recomendada de mantener una reference a largo ploop para un logging en particular es almacenar el nombre y apellido, o un hash del nombre y apellido, además del identificador. Cuando busca un logging por ID, compare el nombre del logging con el nombre almacenado. Si no coinciden, use el nombre almacenado para search el logging y almacene la nueva ID para el logging.

En mi aplicación, también estoy comprobando la date de creación del contacto, ya que el usuario podría haber cambiado el nombre en contra de ABRecordID. La date de creación de un contacto NO cambia al reiniciar el dispositivo.

Aunque he pegado la mayor parte del contenido aquí, siempre se recomienda leer la documentation