NSData的将writeToFile:原子性:不会立即保存文件(NSData writeToFil

2019-06-25 16:47发布

我下载从网上一个SQLite数据库到我的iPad应用程序。 如果我把它写入磁盘设置atomically: YES ,我不能立即使用,因为即使该文件是存在的,sqlite的抱怨说,表是不是有使用它。 如果我使用atomically = NO或我迟疑了几个瞬间,然后我就没有这个问题的文件打开。

我想我可以去了解它通过设定atomically = NO但随后又是有某种形式的担保,该将writeToFile之后整个文件已被写入到磁盘:打电话? 到目前为止,我的数据库是没有那么大,但它最终将,再加上我不知道过了多久等待在其他设备中。

苹果文件说,这个方法返回YES如果操作succeedes但显然不考虑“滞后”保存文件。

任何帮助是极大的赞赏!

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

Answer 1:

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

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

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

[NSThread sleepForTimeInterval:.5];

}


文章来源: NSData writeToFile:atomically: doesn't immediately save the file
标签: ios nsdata