Wie sortiere ich Kontakte nach Erstellungsdatum oder Änderungsdatum in iOS-Kontakte oder OS X-Kontakte 7.x?

Gibt es eine Möglichkeit, das Datum anzuzeigen oder zu exportieren, an dem ein Kontakt in iOS 7 und/oder der Kontakte-App (Version 7.1) erstellt oder geändert wurde, wenn er von einem Mac aus angezeigt wird?

Dieser eine Datenpunkt würde das Deduplizieren und Synchronisieren enorm unterstützen, sogar auf eine manuellere Art und Weise.

Antworten (5)

Nachdem ich ein wenig in Contacts'DB gegraben habe, ist hier das, was ich gefunden habe.

Wie schon von @grgarside gesagt, die DB ist drin

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

Wo <source-ID>ist höchstwahrscheinlich das zuletzt geänderte Verzeichnis.

AddressBook-v22.abcddbist eine SQLite-DB-Datei mit 24 Tabellen (in meinem Fall). Die wichtigste ist ZABCDRECORD, die (unter anderem) den Vornamen, den Nachnamen und das Erstellungsdatum des Kontakts (aber auch Änderung usw.) enthält.

Die 2 interessanten Spalten in Ihrem Fall sind:

  • ZERSTELLUNGSDATUM
  • ZMODIFIKATIONSDATUM

Wie ich kürzlich herausfand, ist das Basisdatum für diese 2 Spalten der 01.01.2001. Die Spalten ZMODIFICATIONDATEYEARLESSund ZCREATIONDATEYEARLESSverwenden als Basisdatum den 1. Januar des Erstellungsjahres.

Mit sqlitekönnen Sie es so sortieren:

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

Es wird FirstName/LastName sortiert nach Änderungsdatum ausgegeben.

Interessant, ich habe diese Spalten nicht…?
sqlite3 AddressBook-v22.abcddb "PRAGMA table_info(ZABCDRECORD);" | grep ZMODIFICATIONDATENichts mit diesem Befehl? (Ich bekomme 63 Spalten mit PRAGMA table_info(ZABCDRECORD);)
Habe diesen Befehl ausgeführt, keine Ausgabe…
Interessant, nur zu Ihrer Information, ich verwende Kontakte 8.0. (Baujahr 1365)
@grgarside ebenfalls.

Die Kontaktdatenbank wird in einer einzelnen SQLite3-Datenbank gespeichert. Hier findest du deine…

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

Dies kann mit exportiert werden

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

Da das Ergebnis eine einzelne Datei ist und erstellte/geänderte Daten nicht in meiner Datenbank gespeichert zu sein scheinen, besteht die einzige Möglichkeit zum Sortieren nach Datum darin, verschiedene Versionen der Datei zu vergleichen.

Sie können Time Machine verwenden, um ältere Versionen der Datei abzurufen, und FileMerge (ein Entwicklertool) oder ein anderes Vergleichstool wie Kaleidoscope, um das Ergebnis zu vergleichen.

Wenn Sie Ihre iOS-Datenbank durchsuchen möchten, jailbreaken Sie Ihre Kontakte oder synchronisieren Sie sie mit Ihrem Mac.

Dies erfordert möglicherweise eine Mischung aus Stack Overflow-Mitarbeitern, die das Innenleben von Kerndatenmigrationen und Änderungsprotokollen in Verbindung mit den funktionsfähigen Dateien untersuchen, um eine Art Verlauf zusammenzustellen. Toller Eröffnungsaufschlag hier, aber ich kann nicht wirklich sehen, wie dies praktikabel wäre, selbst wenn Sie regelmäßige Dumps machen wollten, während Sie große Änderungen vornehmen ...
Vielleicht mehr SuperUser als Stack Overflow imho.

Hinzufügen zu den Antworten hier (ich weiß immer noch nicht, wie man einen Link zu einem Kommentar hinzufügt) - wenn Sie dies einmal tun möchten, würden die Shell-Skripte ausreichen. Wenn Sie dies regelmäßig tun möchten, sollten Sie über die Verwendung eines Produkts nachdenken - ich verwende SQLiteManager , aber es ist teuer, außer wenn es im Angebot ist. Es gibt eine Reihe kostenloser und webbasierter SQLite-Manager. Diese Apps (wie SQLManager) sollten die Möglichkeit haben, nach jeder Spalte zu sortieren. Ich finde das sehr nützlich, nicht nur für Kontakte, sondern für jede SQLite-Datenbank. Hier ist ein Beispiel für eine SQLite-Firefox-Erweiterung.

Wenn Sie zu Referenzzwecken SQLite-Datenbanken sehen möchten, die von Apps verwendet werden, suchen Sie die App im Finder (~/Music/iTunes/Mobile \ Applications), kopieren Sie sie auf Ihren Desktop. Ändern Sie das Suffix in zip und doppelklicken Sie darauf. Seien Sie vorsichtig. Klicken Sie bei gedrückter Strg-Taste auf die .app-Datei, und wenn der Entwickler nichts dagegen hat, befindet sich die SQLite-Datei auf der obersten Ebene.Ich verwende diese Funktion, um meine Apps zu testen, wenn sie live gehen oder wenn sich das Betriebssystem ändert.

Wenn Sie sich dafür entscheiden, bei Skripten zu bleiben, kann vielleicht jemand anderes die Einzelheiten bereitstellen, aber ich glaube, Sie könnten ein Skript erstellen, das die Kontakte nicht nur kopiert - ich schlage vor - nur lesen -, sondern sie dann in Numbers oder gleichwertig einfügt. Dann hätten Sie auch die Möglichkeit, nach Spalten zu sortieren.

Wenn Sie nur schnell Kontakte nach Erstellungsdatum sortiert anzeigen möchten, gibt es einige Apps, die dies tun. Zum Beispiel https://itunes.apple.com/tc/app/recent-contacts/id541831736?mt=8 .

Versuchen Sie so etwas, wenn Sie nach Erstellungsdatum sortieren und das Datum sehen möchten:

  1. Terminal öffnen
  2. Navigieren Sie zu AddressBook-v22.abcddb
  3. Sqlite3 AddressBook-v22.abcddb "datetime(ZCREATIONDATE,'unixepoch'), ZFirstName, ZLastName aus ZABCDRECORD-Reihenfolge nach ZCREATIONDATE auswählen"