2014-10-21 61 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