4

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

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

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

在这一点上,如果你愿意的话,我被迫使用内存数据库,然后将该数据库的全部内容吸收到 NSFileWrapper 中。它可以工作,但不能很好地扩展。如果数据库很大,比如 200-300MB 或更多(这不是这个应用程序的可能性范围),那么每次有人按下时都执行他的操作CommandS或者更糟糕的是,我打开了自动保存)可能是一项非常昂贵的操作。

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

4

0 回答 0