我正在从网上将SQLite数据库下载到我的iPad应用程序中。如果我将其写入磁盘设置atomically: YES
,则无法立即使用它,因为即使文件存在,sqlite也会提示表不存在。如果我使用atomically = NO
或延迟打开文件几分钟,那么我就不会遇到这个问题。
我想我可以通过设置atomically = NO
来解决这个问题,但是又可以保证在writeToFile:调用之后立即将整个文件写入磁盘吗? 到目前为止,我的数据库不是很大,但是最终会增加,而且我不知道在其他设备中要等待多长时间。
苹果文档说,如果操作成功,此方法将返回YES
,但显然不考虑保存文件的“滞后”。
任何帮助是极大的赞赏!
编辑:我看到其他人有the same problem。
最佳答案
根据链接,该操作将完全写入或失败。
考虑到这一点,请在另一个线程上进行原子编写,然后执行类似的操作!
while (![[FileManager defaultFileManager] fileExistsAtPath:yourEventualDBPath]) {
[NSThread sleepForTimeInterval:.5];
}