需要什么来确保新的启用版本控制的核心数据文件与应用程序一起使用



我设置了用于版本控制的工作核心数据sqlite文件。版本控制设置过程创建了3个文件:

  • foo.sqlite
  • foo.sqlite-shm
  • foo.sqlite-wal

从那时起,我可以通过编程(使用MagicalRecord)访问核心数据存储,但我无法使用Firefox插件(SQLite Manager)或应用程序SQLiteManager读取任何数据。我担心,当我将更新后的应用程序发送到应用商店时,其他文件将无法使用,应用程序将崩溃。

我需要做些什么来确保新的版本控制启用的sqlite文件与应用程序一起使用?

这些不是与版本相关的文件,它们是SQLite日志文件。启用预写日志记录后,这些文件将自动创建。这不是iOS 6中的默认设置,但如果您使用PRAGMA journal_mode=WAL;,这是可能的。它可能是iOS 7中的默认设置,也可能不是(目前我没有任何评论)。

我不知道为什么Firefox和SQLiteManager不能打开这个文件。我推测他们都在使用旧版本的SQLite(因为WAL只在SQLite 3.7.0中可用)。无论如何,他们与你的应用程序中是否有必要的文件无关。您只需查看即可了解应用程序中包含的内容。.app实际上只是一个目录,所以看看里面有什么。

如果您使用的是轻量级迁移(wich是通过传递打开商店时的正确选项),Core Data负责将架构升级到位。

额外的WAL和SHM文件不是轻量级的结果迁移,但只是由SQLite在提前日志记录"模式。(安过于简单的说法是,新数据会进入.wal文件,直到积累足够多,然后将其移动到.sqlite文件中。)

是的,您肯定想使用Ad Hoc构建来测试轻量级迁移从Xcode进行测试是不够的。

Mike Fikes

最新更新