簡體   English   中英

如何在CoreData SQLite數據庫中強制更新?

[英]How can I force update in a CoreData SQLite database?

我有一個應用程序,並且使用CoreData來存儲數據。 一切正常,但是我想輕松地訪問我的數據,以進行驗證。 因此,我想到了嘗試與iTunes(UIFileSharingEnabled)共享數據的想法。 現在,我可以在iTunes中查看數據庫,可以在Mac上復制.sqlite文件,並且可以使用sqlite3驗證數據。

一切都很好,但是我想測試其他東西,所以我在應用程序中修改了一些數據,但是我無法訪問修改后的數據。 .sqlite數據庫始終存在幾天。 我在iTunes共享中還有另外兩個文件(.sqlite-shm和.sqlite-wal),它們已被修改(當我修改數據時,日期會更改),但是我無法“更新” .sqlite文件。

我嘗試在iPhone上強制退出該應用程序,重新構建該應用程序,創建新數據而不是修改數據,但是沒有運氣。

我的應用程序中的數據是正確的,因此我假設修改存儲在其他兩個文件中,但是有人知道我可以嘗試強制更新.sqlite文件嗎?

存在其他文件,因為商店使用SQLite日記類型。 您只需在初始化sqlite3工具時使用該類型。

理想情況下,您只應使用應用程序代碼來查詢數據存儲,而不要使用sqlite3,因為表結構應視為私有的。

根據Technical Q&A1809 ,強制SQLite將-wal文件合並到主.SQLite文件中的方法是使用“回滾日志記錄模式”將存儲添加到持久存儲協調器中:

對於以WAL模式加載的商店,如果主商店文件和對應的-wal文件都存在,則使用回滾日志記錄模式將商店添加到持久性商店協調器中將強制Core Data執行檢查點操作,該操作將合並-wal文件中的數據到存儲文件。 這實際上是執行檢查點操作的核心數據方式。

技術說明包括實現此目的的示例代碼(盡管目標C)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM