ABRecord es un tipo C opaco. No es un objeto en el sentido de Objective-C. Eso significa que no puede ampliarlo, no puede agregar una categoría, no puede enviarlo por mensaje. Lo único que puede hacer es llamar a las funciones descritas en ABRecord Reference con ABRecord como parámetro.
Se podía hacer dos cosas para ser capaz de mantener la información que hace referencia la ABRecord cerca de:
obtener el ID ABRecords por ABRecordGetRecordID()
. El ABRecordID se define como int32_t para que pueda convertirlo a un NSInteger y almacenarlo donde desee. Luego puede recuperar la grabación desde ABAddressBookGetPersonWithRecordID()
o ABAddressBookGetGroupWithRecordID()
. Pero consciente, el registro podría ser modificado o incluso borrado por el usuario o por otra aplicación mientras tanto.
Copie todos los valores dentro del registro a una subclase estándar NSObject y utilice NSCoding u otras técnicas para almacenarlo. A continuación, no se beneficiará de los cambios o adiciones al registro que el usuario podría haber realizado.
De causa que puede combinar ambos enfoques.
Gracias por su respuesta, ¡esto trae comprensión! –
muy útil. Estaba luchando con una forma de recuperación de una persona después de guardar una copia en los datos centrales de mi aplicación. Entonces esto ayudó. – CW0007007