·5 min leestijd

Hoe je Core Data SQLite-bestanden doorbladert op Mac

Core Data slaat zijn data op in SQLite-bestanden, maar Apple geeft je geen visuele tool om ze te inspecteren. Persistente data debuggen betekent zoeken door appcontainers en ruwe SQL-output lezen.

Je bent een Core Data-probleem aan het debuggen in je iOS- of macOS-app. De data ziet er verkeerd uit in de UI, en je moet zien wat er daadwerkelijk is opgeslagen in het onderliggende SQLite-bestand. Xcode's Core Data-modeleditor toont je schema, maar laat je de daadwerkelijk opgeslagen data niet doorbladeren. Dus ga je op zoek — je vindt de appcontainer, lokaliseert het .sqlite-bestand, opent Terminal en begint ruwe queries uit te voeren tegen tabellen met namen zoals ZUSER en ZPOST, waar elke kolom is voorafgegaan door een Z en niets intuïtief overeenkomt met je entiteitsnamen.

Core Data's SQLite-bestanden zijn lastig te inspecteren

Core Data gebruikt SQLite als standaard persistente opslag, maar voegt zijn eigen conventies toe. Entiteitsnamen krijgen een Z-voorvoegsel in de tabelnaam. Attributen krijgen Z-voorvoegde kolomnamen. Relaties worden opgeslagen als integer foreign keys in kolommen die je niet meteen herkent. Er is een Z_METADATA-tabel en een Z_PRIMARYKEY-tabel die Core Data intern beheert.

Niets hiervan is gedocumenteerd op een manier die handmatige inspectie eenvoudig maakt. Je eindigt met queries zoals SELECT * FROM ZUSER; en probeert de Z-voorvoegde kolommen terug te koppelen aan je managed object model. In Terminal, zonder syntaxismarkering en zonder visueel raster, is dit vervelend.

Xcode helpt hier niet bij. Er is geen ingebouwde SQLite-browser. Instruments kan Core Data-operaties profileren, maar toont je niet de daadwerkelijke rijdata. Je hebt een aparte tool nodig.

Blader door Core Data SQLite-bestanden met Tome

Tome opent Core Data's SQLite-bestanden zoals elke andere database. Navigeer naar de container van je app, vind het .sqlite-bestand en open het in Tome. Elke Z-voorvoegde tabel verschijnt in de zijbalk. Klik op één om alle rijen en hun waarden te zien in een scrollbaar raster.

Tome browsing a Core Data SQLite file showing Z-prefixed tables

Zie de echte data

Wanneer je app de verkeerde waarde toont, open het SQLite-bestand in Tome en controleer de daadwerkelijk opgeslagen data. Is de waarde verkeerd in de database, of is het een fetch/weergavebug? Visuele toegang tot de ruwe data beantwoordt deze vraag in seconden.

Inspecteer relaties en metadata

Blader door de Z_PRIMARYKEY-tabel om te zien hoe Core Data entiteitstypes en primaire sleutels bijhoudt. Controleer foreign key-kolommen om te verifiëren dat relaties correct zijn opgeslagen. Inspecteer Z_METADATA om de modelversiehash te zien.

Voer diagnostische queries uit

Gebruik Tome's SQL-query-editor om joins te schrijven tussen Core Data's Z-voorvoegde tabellen, te filteren op specifieke records, of te controleren op verweesde rijen die kunnen duiden op een migratieprobleem. Syntaxismarkering en auto-aanvulling maken dit gemakkelijker dan ruwe queries uitvoeren in Terminal.

Veilig te inspecteren, gemakkelijk te vinden

Voor de Simulator ligt het SQLite-bestand van je app diep verscholen in ~/Library/Developer/CoreSimulator/. Voor een macOS-app kijk je in ~/Library/Containers/ of ~/Library/Application Support/. Zodra je het bestand hebt gevonden, sleep je het naar het dock-icoon van Tome en begin je te bladeren.

Haal Tome in de Mac App Store

Volgend artikel

Tome

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

Get Tome on the Mac App Store