将大型 SQLite 数据库包装在 NSDocument 包中

use*_*646 5 sqlite nsdocument

我正在编写一个基于 NSDocument 的应用程序,它有一个 SQLite 数据库,我希望将其标记在文档包中。它由一定数量的表组成,每个表的架构是时间戳和值。该数据库一开始很小,但随着时间的推移可能会增长到相当大的数量。该应用程序正在“在 NSDocument 的背后”更新数据库。

到目前为止,我尝试做的是重写该writeToURL:ofType:error:方法,该方法可以传递一些复杂的 URL,例如:

文件://localhost/private/var/folders/mr/l1z6gdls0fb3t28m3z1bz6lw0000gn/T/TemporaryItems/(A%20Document%20Being%20Saved%20By%MyApp%2031)/Untitled.wsdoc

此时,如果您愿意,我被迫使用内存数据库,然后将该数据库的全部内容吸收到 NSFileWrapper 中。它有效,但扩展性不佳。如果数据库很大,例如 200-300MB 或更多(这并非超出此应用程序的可能性范围),那么每次有人按Command- (或者更糟糕的是,我打开自动保存)时执行他的操作可能是一项非常昂贵的操作。S

所以我想知道:是否可以管理 NSDocument 权限范围之外的 SQLite 文件,同时仍将其驻留在文档包中,以便数据库在移动/复制时可以存在于包中?