10 votos

¿Cómo ordenar los contactos por fecha de creación o de modificación en Contactos de iOS o Contactos de OS X 7.x?

¿Hay alguna forma de ver o exportar la fecha de creación o modificación de un contacto en iOS 7 y/o en la aplicación Contactos (versión 7.1) cuando se ve desde un Mac?

Este dato ayudaría enormemente a la deduplicación y sincronización, incluso de forma más manual.

4voto

Satanicpuppy Puntos 4902

Después de escarbar un poco en Contacts ' DB esto es lo que he encontrado.

Como ya ha dicho @grgarside, la BD está en

~/Library/Application\ Support/Address\ Book/Sources/<source-ID>/AddressBook-v22.abcddb

Dónde <source-ID> es probablemente el directorio modificado más recientemente.

AddressBook-v22.abcddb es un archivo de base de datos SQLite con 24 tablas (en mi caso). La más importante es ZABCDRECORD que contiene (entre otros) el nombre, el apellido y la fecha de creación del contacto (pero también la modificación, etc.).

Las 2 columnas interesantes en su caso son :

  • ZCREATIONDATE
  • ZFECHA DE MODIFICACIÓN

Como Me enteré hace poco La fecha base de estas dos columnas es el 01-01-2001. Las columnas ZMODIFICATIONDATEYEARLESS y ZCREATIONDATEYEARLESS utilizar el 1 de enero del año de creación como fecha base.

Utilizando sqlite se puede ordenar así :

sqlite3 AddressBook-v22.abcddb "select ZFirstName, ZLastName from ZABCDRECORD order by ZMODIFICATIONDATE"

Se mostrará el Nombre/Apellido ordenado por fecha de modificación.

0 votos

Interesante, no tengo estas columnas

0 votos

sqlite3 AddressBook-v22.abcddb "PRAGMA table_info(ZABCDRECORD);" | grep ZMODIFICATIONDATE ¿Nada con este comando? (Obtengo 63 columnas con PRAGMA table_info(ZABCDRECORD); )

0 votos

He ejecutado ese comando, sin salida

3voto

siva Puntos 23

La base de datos de contactos se almacena en una única base de datos SQLite3. Puedes encontrar la tuya aquí

~/Library/Application\ Support/AddressBook/Sources/<source-ID>/AddressBook-v22.abcddb

Esto se puede exportar utilizando

sqlite3 AddressBook-v22.abcddb .dump > ~/Desktop/export

Como el resultado es un único archivo y las fechas de creación/modificación no parecen estar almacenadas en mi base de datos, la única manera de ordenar por fecha es comparando varias versiones del archivo.

Puede utilizar Time Machine para obtener versiones antiguas del archivo y FileMerge (una herramienta para desarrolladores) u otra herramienta de comparación como Kaleidoscope para comparar el resultado.

Si quieres buscar en tu base de datos de iOS, o bien Jailbreak o bien sincroniza tus contactos con tu Mac.

0 votos

Esto podría necesitar una mezcla de gente de Stack Overflow que conozca el funcionamiento interno de las migraciones de Core Data y de los registros de cambios, junto con los archivos que se pueden utilizar para reunir algún tipo de historia. Gran servicio de apertura aquí, pero realmente no puedo ver cómo esto sería viable, incluso si usted quería hacer volcados periódicos al hacer grandes cambios ...

0 votos

Tal vez más SuperUser que Stack Overflow imho.

1voto

user320794 Puntos 1

Prueba algo así si quieres ordenar por fecha de creación y ver la fecha:

  1. Terminal abierta
  2. Navegue hasta AddressBook-v22.abcddb
  3. Sqlite3 AddressBook-v22.abcddb "select datetime(ZCREATIONDATE,'unixepoch'), ZFirstName, ZLastName from ZABCDRECORD order by ZCREATIONDATE"

0voto

David DelMonte Puntos 1632

Añadiendo a las respuestas aquí (todavía no sé cómo añadir un enlace a un comentario) - si desea hacer esto una vez, entonces el shell scripts sería suficiente. Si desea hacerlo de forma continua, usted podría pensar en usar un producto - Yo uso SQLiteManager pero es caro, excepto cuando está en oferta. Hay una serie de gestores de SQLite gratuitos y basados en la web. Estas aplicaciones (como SQLManager), deben tener la capacidad de ordenar por cualquier columna. Esto me parece muy útil, no sólo para los contactos, sino para cualquier base de datos SQLite. Aquí es un ejemplo de extensión de SQLite para Firefox.

Como referencia, si quieres ver las bases de datos SQLite que utilizan las aplicaciones, busca la aplicación en el Finder (~/Música/iTunes/Aplicaciones móviles, cópiala en tu escritorio. Cambia el sufijo a zip y haz doble clic. Ten cuidado. Haz control-clic en el archivo .app, y si al desarrollador no le importa, el archivo sqlite estará en el nivel superior. Yo uso esta facilidad para probar mis aplicaciones cuando salen al mercado, o cuando el sistema operativo cambia.

Si decides quedarte con scripts, tal vez alguien más pueda proporcionar los detalles, pero creo que podrías crear un scriptsscriptscripts que no sólo copiara los contactos -sugiero que sólo de lectura- sino que luego los pegara en Numbers o equivalente. Entonces, usted también tendría la capacidad de ordenar por columna.

0voto

Michael Johnston Puntos 2195

Si sólo quieres una forma rápida de ver los contactos ordenados por fecha de creación, hay algunas aplicaciones que lo hacen. Por ejemplo, https://itunes.apple.com/tc/app/recent-contacts/id541831736?mt=8 .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X