我正在从网上将SQLite数据库下载到我的iPad应用程序中。如果我将其写入磁盘设置atomically: YES,则无法立即使用它,因为即使文件存在,sqlite也会提示表不存在。如果我使用atomically = NO或延迟打开文件几分钟,那么我就不会遇到这个问题。

我想我可以通过设置atomically = NO来解决这个问题,但是又可以保证在writeToFile:调用之后立即将整个文件写入磁盘吗? 到目前为止,我的数据库不是很大,但是最终会增加,而且我不知道在其他设备中要等待多长时间。

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

任何帮助是极大的赞赏!

编辑:我看到其他人有the same problem

最佳答案

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

考虑到这一点,请在另一个线程上进行原子编写,然后执行类似的操作!

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

[NSThread sleepForTimeInterval:.5];

}

09-17 12:53