6

Web から iPad アプリに SQLite データベースをダウンロードしています。ディスク設定に書き込むとatomically: YES、ファイルが存在するにもかかわらず、sqlite がテーブルが存在しないと不平を言うため、すぐには使用できません。atomically = NOファイルを開くのを少し遅らせたり、使用したりすると、この問題は発生しません。

私は設定することでそれを行うことができると思いatomically = NOますが、 writeToFile: 呼び出しの直後にファイル全体がディスクに書き込まれたという保証はありますか? これまでのところ、私のデータベースはそれほど大きくありませんが、最終的にはそうなるでしょう。さらに、他のデバイスでどれくらい待つべきかわかりません.

Apple のドキュメントによると、このメソッドはYES操作が成功した場合に返されますが、ファイルを保存する「ラグ」は明らかに考慮されていません。

どんな助けでも大歓迎です!

編集: 他の人が同じ問題を抱えているのがわかります。

4

1 に答える 1

1

リンクによると、操作は完全に書き込むか、失敗します。

それを念頭に置いて、別のスレッドでアトミックに書いてから、このようなことをしてください!

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

[NSThread sleepForTimeInterval:.5];

}
于 2012-06-22T20:01:15.257 に答える