2011-11-02 11 views
13

Al obtener los contactos modificados de Sync Services, a través del método applyChange:forEntityName:remappedRecordIdentifier:formattedRecord:error. Los ID en la libreta de direcciones tienen el formato 2C13E20E-6B24-4090-81FA-7A1E8B28119B, y aunque algunos ID de este tipo están presentes en el objeto ISyncChange *, esos no son identificadores de contacto reales que se pueden encontrar en la libreta de direcciones ...¿Hay alguna manera de obtener los ID de contacto de la libreta de direcciones de los ID de contacto de Sync Services?

Es ¿Hay alguna manera de averiguar a través de Sync Services cuál es la identificación de un determinado contacto en la libreta de direcciones?


La razón de hacer es que al guardar imágenes de gran tamaño para los contactos de la libreta de direcciones, servicios de sincronización no guarda las imágenes en su almacenamiento de datos interno. Por lo tanto, los contactos que se han modificado o agregado con una imagen grande serán devueltos por Sync Services sin la imagen, básicamente ofreciendo información incompleta.

que necesito para obtener el ID de libreta de direcciones, de modo que pueda mirar hacia arriba la imagen del contacto en ~/Library/Application Support/Address Book/Images/

Gracias!

Respuesta

1

Es una mala idea confiar en la id. De la libreta de direcciones relacionada con una imagen en ~/Library/Application Support/Address Book/Images/- sería mejor que encuentre una API que le proporcione los datos que desea trabajar con, porque no está garantizado que la imagen estará allí en ese momento, o más tarde (después de una actualización, ¡todo esto podría cambiar!).

Después de una pequeña cantidad de investigaciones, parece que la API desea se documenta aquí: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AddressBook/Tasks/AccessingData.html#//apple_ref/doc/uid/20001023-103617

Es un poco difícil de manejar, ya que necesariamente tienen que entender su protocolo ABImageClient y proporcionar una devolución de llamada, pero no lo hace creo que es tan malo. Este enfoque es mucho mejor de lo que estaba haciendo: es la forma aprobada por Apple de obtener estos datos y no tendrá que preocuparse de que se rompa en el futuro.

+0

Supongo que quiere decir usar 'imageData' para obtener los datos de la imagen de un contacto. ¿Cómo obtengo ese contacto? Necesito su identificación de alguna manera. – Andrei

+0

Hmm, me perdí completamente esa parte de la pregunta cuando leí esto originalmente. Intento leer la documentación de servicios de sincronización para ApplyChange: ForEntityName: pero como Apple decidió desaprobar esa API en Lion, eliminaron toda la documentación de developer.apple.com. Tal vez alguien más conocedor de los servicios de sincronización sabrá cómo obtener desde el identificador de objeto iSyncChange al uuid subyacente para el contacto en AB. – tjarratt

Cuestiones relacionadas