6

我正在将一个 SQLite 数据库从网上下载到我的 iPad 应用程序中。如果我将它写入磁盘设置,atomically: YES我不能立即使用它,因为即使文件在那里,sqlite 也会抱怨表不在那里。如果我使用atomically = NO或延迟打开文件几秒钟,那么我就没有这个问题。

我想我可以通过设置来解决这个问题,atomically = NO但又是否有某种保证在 writeToFile: 调用之后整个文件已写入磁盘?到目前为止,我的数据库并没有那么大,但最终会,而且我不知道在其他设备上要等多久。

Apple 文档说,YES如果操作成功,此方法将返回,但显然这没有考虑保存文件的“滞后”。

任何帮助是极大的赞赏!

编辑:我看到其他人也有同样的问题

4

1 回答 1

1

根据链接,操作将完全写入或失败。

考虑到这一点,在另一个线程上原子地编写,然后做这样的事情!

while (![[FileManager defaultFileManager] fileExistsAtPath:yourEventualDBPath]) {

[NSThread sleepForTimeInterval:.5];

}
于 2012-06-22T20:01:15.257 回答