NSData writeToFile:atomically:不立即保存文件

Jul*_*ian 6 nsdata ios

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

我想我可以通过设置来解决它atomically = NO但是又有一种保证在writeToFile:call之后整个文件已经写入磁盘了吗?到目前为止,我的数据库并不是那么大,但它最终还会,而且我不知道在其他设备中等待多长时间.

Apple文档说YES如果操作成功,则此方法返回但显然没有考虑保存文件的"滞后".

任何帮助是极大的赞赏!

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

小智 1

根据链接,该操作要么完全写入,要么失败。

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

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

[NSThread sleepForTimeInterval:.5];

}
Run Code Online (Sandbox Code Playgroud)