2010-07-08 10 views

Respuesta

12

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:

  1. 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.

  2. 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.

+0

Gracias por su respuesta, ¡esto trae comprensión! –

+0

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