在我們前一篇的文章中,我們成功建立了一個極簡的資料表,並將其存儲在 Core Data 使用的 SQLite 資料庫中。在這篇筆記中,我們將深入探索 Core Data 所使用的 SQLite 資料庫,了解其內部結構和操作方式。我們會找到實體 SQLite 檔案,查看並修改其內容,最後觀察修改後在 App 中的顯示變化。
手動修改 SQLite 資料庫中的數據後,再重新執行 App 時,可以看到剛剛修改的數據已經在 App 的界面中顯示出來。
Core Data 本身是一個高層次的資料持久化框架,它的目的是隱藏資料庫的細節,讓開發者能專注於數據的管理。然而,當我們需要更深入地了解 Core Data 的運作時,認識其背後的 SQLite 資料庫結構就顯得格外重要。
要找到 Core Data 所使用的 SQLite 資料庫,我們可以在 Xcode 中進行一些設置來輸出相關路徑信息:
-com.apple.CoreData.SQLDebug 1
-com.apple.CoreData.Logging.stderr 1
這些參數將允許我們在運行 App 時,Xcode 的控制台中顯示 SQLite 資料庫的存放路徑及其運行時所執行的 SQL 語句。
現在,當我們執行專案時,可以在控制台中看到 SQLite 資料庫的路徑信息。
運行專案後,控制台將顯示類似以下的訊息:
CoreData: annotation: Connecting to sqlite database file at "/Users/yourname/Library/Developer/CoreSimulator/Devices/…/Library/Application Support/YourAppName.sqlite"
透過這條訊息,我們找到了 Core Data 使用的 SQLite 資料庫檔案。
在 Finder 中打開該路徑,可以看到 SQLite 資料庫文件以及兩個附屬文件(.sqlite-shm 和 .sqlite-wal)。
知道了 SQLite 資料庫的位置後,我們可以使用工具來檢視其內容。我們可以使用 DB Browser for SQLite 等免費工具來打開這個資料庫,並查看其內部結構。
在打開資料庫後,你會發現裡面包含數個資料表,常見的有:
透過這個過程,我們能更清楚地了解 Core Data 是如何將高階的實體轉換為底層的資料庫表格及其對應欄位的。
接下來,我們將在 SQLite 資料庫中直接修改數據,並觀察這些修改如何影響 App 的顯示。
使用 DB Browser for SQLite 工具,我們可以打開 ZSIMPLEENTITY 資料表,並手動修改其中的數據。當我們重新執行 App 時,可以看到剛剛修改的數據已經在 App 的界面中顯示出來。這一步展示了資料庫內容與 App 的同步機制,並證明了 Core Data 與其底層 SQLite 資料庫之間的互動。
透過這篇文章,我們深入探索了 Core Data 背後的 SQLite 資料庫結構。了解 Core Data 如何依賴 SQLite 進行資料持久化的運作,不僅幫助我們更好地掌握 Core Data,也讓我們在需要進行低層級的數據管理時擁有更多的操作自由。
SQLite 是 Core Data 的默認儲存機制之一,對其結構的深入理解,能夠幫助我們更靈活地應用 Core Data,並能處理更多複雜的需求(如多對多關聯、複合查詢等)。希望這篇文章能幫助你打開 Core Data 更進階功能的大門,並為你的 iOS 開發旅程提供更強大的工具。