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

时间:2012-06-22 17:16:53

标签: ios nsdata

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

我想我可以通过设置atomically = NO来解决这个问题,但是再次可以保证整个文件在writeToFile之后立即写入磁盘:打电话?到目前为止,我的数据库并不是那么大,但最终还是会,而且我不知道在其他设备上等待多长时间。

Apple文档说如果操作成功,此方法将返回YES,但显然没有考虑保存文件的“延迟”。

非常感谢任何帮助!

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

1 个答案:

答案 0 :(得分:1)

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

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

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

[NSThread sleepForTimeInterval:.5];

}