2

SQLiteにデータを保存するアプリについて質問があります。データはFMDBラッパーを使用して読み取られ、サーバー側のデータベースが変更された場合はユーザーに対して透過的に更新する必要があります。

これを実現するためにFMDatabase、新しいデータベースがダウンロードされるたびに、シングルトン内のオブジェクト全体を新しいオブジェクトに置き換えています。

ただし、たとえばユーザーが現在テーブルビューをスクロールしている場合など、一瞬のクエリは失敗します。

したがって、問題は、.sqlite現在のキューを保持したまま、現在開いているファイルをどのように置き換えるかということです。

編集:クエリはデータベースに対して非常に頻繁に実行されます。たとえば、ビューをスクロールするときにcount()があるため、ユーザーがデータベースを操作するのを一時的に「ブロック」する簡単な方法はありません。

4

2 に答える 2

1

私の意見では、SQLiteデータベースのデータソースを配列またはその他のコレクションに保存することになりますよね?

したがって、更新されたデータベースをサーバーからダウンロードし終えたら、「DatabaseUpdated」という通知を投稿してください。(このコードは共有シングルトンに含まれている必要があります)。

そして、ViewControllerをこの通知のオブザーバーにします。

この通知を受け取ったら、ViewControllerを呼び出し[tableView reloadData];てください。

したがって、実際には、新しいデータベースの変更に応じてビューが更新されます。

于 2012-12-28T06:02:30.027 に答える
1

UIActivityIndicatorViewDBの更新中にその一瞬の間にを追加しても大丈夫ですか?転送の開始時にオンにし、コールバック時にオフにすることができます。

于 2012-12-26T19:32:14.240 に答える