0

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

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

从那时起,我可以通过编程方式访问 Core Data 存储(使用 MagicalRecord),但我无法使用 Firefox 插件(SQLite Manager)或应用程序 SQLiteManager 读取任何数据。我担心当我将更新的应用程序发送到 App Store 时,附加文件不会消失,应用程序会崩溃。

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

4

2 回答 2

1

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

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

于 2013-08-13T19:44:49.773 回答
0

如果您使用轻量级迁移(通过在打开商店时传递正确的选项来启用),Core Data 会负责就地升级模式。

额外的 WAL 和 SHM 文件不是轻量级迁移的结果,而是由 SQLite 在 Core Data 放入的“预写日志”模式下简单地生成的。(过度简化是新数据进入 .wal 文件,直到累积足够多,然后才将其移动到 .sqlite 文件。)

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

迈克·菲克斯

于 2013-08-13T19:42:14.833 回答