2014-10-21 62 views
0

(原諒我,因爲我不使用張貼在這裏。將盡我所能)使用MagicalRecord預先填充數據庫(swift)。 - 沃雜誌創建,但是,數據沒有複製到數據庫

我正在使用一個iOS應用程序,將使用預先填充數據庫。在我的工作區中,我有一個用於iOS應用程序的項目和一個單獨的命令行工具項目來填充數據庫。我已將數據庫文件從「/ Library/Application Support」文件夾拖入我的iOS項目(不使用「如果需要複製項目」)。因此,當數據發生變化或需要額外的數據時,我可以運行命令行工具預先填充數據。從那裏我將從模擬器中刪除應用程序,並做一個乾淨的。當我運行應用程序時,我會認爲一切都會好的。

這讓我發瘋的時間最長,但有時,我沒有看到在移除應用程序,清理項目然後運行後反映的變化。看起來我能得到這個工作的唯一方法是,在我運行命令行工具預先填充數據庫之後,我必須使用Base,SQLiteStudio或Firefox的sqlite附加組件打開數據庫文件。一旦我這樣做,它似乎工作。

當我在查找器中查看文件.sqlite,sqlite-shm和sqlite-wal。在打開數據庫文件之前,我發現wal文件是最大的(現在是2mb)。一旦我使用Base打開文件,然後關閉它,sqlite文件現在是2mb。

當命令行即將完成時,我嘗試在文件(vacuum,wal-checkpoint)上運行PRAGMA語句,但這些都不起作用。我在這裏錯過了什麼。我也嘗試使用NSManagedObjectContext.MR_defaultContext.saveToPersistentStoreAndWait

我正在使用下面的代碼來設置和保存。

MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("callithome.sqlite") 

MagicalRecord.saveUsingCurrentThreadContextWithBlockAndWait({(context)->Void in 
        println("Data saved, I hope")}) 
MagicalRecord.cleanUp() 

任何幫助,將不勝感激

回答

0

您需要啓用您的SQLite商店DELETE編譯模式。這不會創建-wal和-shm文件。這將使您更容易在預填充的數據存儲中使用單個文件。您需要使用MagicalRecord 3.0以及一些額外的功能,才能將自定義選項添加到您的商店,如果您想要走這條路線。但是,您仍然可以將商店添加到協調器,並使用適當的編譯指示選項配置該商店。也就是說,如果您使用普通的核心數據,則MagicalRecord不是必需的。

+0

謝謝。有沒有入門教程或Magical Record 3.0的一些文檔? (例如,使用核心數據並嘗試啓用「刪除」編譯指示。 – Nathan187 2014-10-22 13:27:01