·5 Min. Lesezeit

So durchsuchst du Core-Data-SQLite-Dateien auf dem Mac

Core Data speichert seine Daten in SQLite-Dateien, aber Apple gibt dir kein visuelles Tool, um sie zu inspizieren. Das Debugging persistenter Daten bedeutet, durch App-Container zu graben und rohe SQL-Ausgaben zu lesen.

Du debuggst ein Core-Data-Problem in deiner iOS- oder macOS-App. Die Daten sehen in der UI falsch aus, und du musst sehen, was tatsächlich in der zugrunde liegenden SQLite-Datei gespeichert ist. Xcodes Core-Data-Modelleditor zeigt dir dein Schema, aber er lässt dich nicht die tatsächlich gespeicherten Daten durchsuchen. Also machst du dich auf die Suche — finde den App-Container, lokalisiere die .sqlite-Datei, öffne das Terminal und führe rohe Abfragen gegen Tabellen mit Namen wie ZUSER und ZPOST aus, wo jede Spalte mit Z prefixiert ist und nichts intuitiv zu deinen Entity-Namen passt.

Core-Data-SQLite-Dateien sind schwer zu inspizieren

Core Data verwendet SQLite als Standard-Persistent-Store, fügt aber eigene Konventionen hinzu. Entity-Namen bekommen ein Z-Präfix im Tabellennamen. Attribute bekommen Z-präfixierte Spaltennamen. Beziehungen werden als Integer-Foreign-Keys in Spalten gespeichert, die du möglicherweise nicht sofort erkennst. Es gibt eine Z_METADATA-Tabelle und eine Z_PRIMARYKEY-Tabelle, die Core Data intern verwaltet.

Nichts davon ist so dokumentiert, dass manuelle Inspektion einfach wäre. Am Ende führst du Abfragen wie SELECT * FROM ZUSER; aus und versuchst, die Z-präfixierten Spalten deinem Managed-Object-Modell zuzuordnen. Im Terminal, ohne Syntaxhervorhebung und ohne visuelles Raster, ist das mühsam.

Xcode hilft hier nicht weiter. Es gibt keinen eingebauten SQLite-Browser. Das Instruments-Tool kann Core-Data-Operationen profilieren, aber es zeigt dir nicht die tatsächlichen Zeilendaten. Du brauchst ein separates Tool.

Core-Data-SQLite-Dateien durchsuchen mit Tome

Tome öffnet Core-Data-SQLite-Dateien wie jede andere Datenbank. Navigiere zum Container deiner App, finde die .sqlite-Datei und öffne sie in Tome. Jede Z-präfixierte Tabelle erscheint in der Seitenleiste. Klicke auf eine, um alle Zeilen und ihre Werte in einem scrollbaren Raster zu sehen.

Tome durchsucht eine Core-Data-SQLite-Datei mit Z-präfixierten Tabellen

Die echten Daten sehen

Wenn deine App den falschen Wert anzeigt, öffne die SQLite-Datei in Tome und überprüfe die tatsächlich gespeicherten Daten. Ist der Wert in der Datenbank falsch, oder ist es ein Fetch-/Anzeigefehler? Visueller Zugriff auf die Rohdaten beantwortet diese Frage in Sekunden.

Beziehungen und Metadaten inspizieren

Durchsuche die Z_PRIMARYKEY-Tabelle, um zu sehen, wie Core Data Entity-Typen und Primärschlüssel verfolgt. Überprüfe Foreign-Key-Spalten, um sicherzustellen, dass Beziehungen korrekt gespeichert sind. Inspiziere Z_METADATA, um den Modellversions-Hash zu sehen.

Diagnoseabfragen ausführen

Nutze Tomes SQL-Abfrage-Editor, um Joins über Core Datas Z-präfixierte Tabellen zu schreiben, nach bestimmten Datensätzen zu filtern oder nach verwaisten Zeilen zu suchen, die auf ein Migrationsproblem hindeuten könnten. Syntaxhervorhebung und Autovervollständigung machen es einfacher als rohe Abfragen im Terminal.

Sicher zu inspizieren, leicht zu finden

Für den Simulator befindet sich die SQLite-Datei deiner App tief in ~/Library/Developer/CoreSimulator/. Für eine macOS-App überprüfe ~/Library/Containers/ oder ~/Library/Application Support/. Sobald du die Datei gefunden hast, ziehe sie auf Tomes Dock-Symbol und fange an zu browsen.

Tome im Mac App Store laden

Nächster Artikel

Tome

Browse, query, and edit SQLite databases in a native Mac app.

Get Tome on the Mac App Store