我设置了用于版本控制的工作核心数据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