【发布时间】:2014-10-21 23:59:04
【问题描述】:
(原谅我不习惯在这里发帖。会尽力而为)
我正在开发一个将使用预填充数据库的 iOS 应用程序。在我的工作区中,我有一个 iOS 应用项目和一个单独的命令行工具项目来填充数据库。我已将数据库文件从“/Library/Application Support”文件夹拖到我的 iOS 项目中(不使用“如果需要则复制项目”)。因此,当数据发生变化或需要额外数据时,我可以只运行命令行工具来预填充数据。从那里我将从模拟器中删除应用程序并进行清理。当我运行应用程序时,我会认为一切都会好起来的。
这让我疯了很长时间,但有时,在我删除应用程序、清理项目然后运行后,我看不到变化。似乎我可以让它工作的唯一方法是,在我运行命令行工具预填充数据库之后,我必须使用 Base、SQLiteStudio 或 Firefox 的 sqlite 插件打开数据库文件。一旦我这样做,它似乎工作。
当我查看 finder 时,我确实看到了文件 .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()
任何帮助将不胜感激
【问题讨论】:
标签: magicalrecord