我正在从网上将SQLite数据库下载到我的iPad应用程序中。如果我把它写入磁盘设置atomically: YES
我不能立即使用它,因为即使文件在那里,sqlite也会抱怨表不存在。如果我使用atomically = NO
或者我延迟文件的打开几个时刻,那么我没有这个问题。
我想我可以通过设置atomically = NO
来解决这个问题,但是再次可以保证整个文件在writeToFile之后立即写入磁盘:打电话?到目前为止,我的数据库并不是那么大,但最终还是会,而且我不知道在其他设备上等待多长时间。
Apple文档说如果操作成功,此方法将返回YES
,但显然没有考虑保存文件的“延迟”。
非常感谢任何帮助!
编辑:我看到其他人正在the same problem。
答案 0 :(得分:1)
根据链接,操作将完全写入或失败。
考虑到这一点,在另一个线程上原子地写,然后做这样的事情!
while (![[FileManager defaultFileManager] fileExistsAtPath:yourEventualDBPath]) {
[NSThread sleepForTimeInterval:.5];
}