3

単純なメモ アプリケーションの場合、コア データに保存されたメモのリストを持つ fetchedResultsController を持つテーブル ビュー コントローラーがあります。ユーザーは + ボタンをクリックして新しいメモを追加するか、テーブル ビュー内のレコードの 1 つをクリックして既存のメモを編集できます。いずれの場合も、テキスト ビューを備えたモーダル ビュー コントローラーが表示されます。

ユーザーが文字を入力するたびに保存したいので、textViewDidChange で Core Data を更新しています。ユーザーの入力が速すぎると、コア データの保存がハングします。私は最近、NSOperationQueue に更新を追加するコードを追加しました
それはいくらか助けになりました。

これが私が助けを必要としている問題です。ユーザーが textView に更新を入力し、[完了] を押してテーブル ビュー コントローラーに戻り、元の更新がテーブル ビューで更新される前に、同じメモをクリックしてメモを再度編集するとします。ユーザーには、古いデータを含む textView が表示されます。アップデートはありません。ユーザーがテーブル ビューに戻ってメモを再度編集すると、最新の更新が表示されます。

考慮すべきいくつかのアプローチ、またはこの問題を解決するにはどうすればよいですか? ユーザーが必要以上に速く textView と tableViewController を切り替えている場合でも、textView には常に最新の更新が表示されるようにしたい ;)

4

2 に答える 2

2

ユーザーが文字を追加するたびにコンテキストを保存する必要はありません。メモの追加が終了したとき、または少なくともテキストフィールドがフォーカスを失ったとき (ファーストレスポンダーが辞任したとき) にのみ保存してください。彼がタップするたびにそれをするのは本当に意味がありません. コンテキストの保存はかなりコストのかかる操作です。

于 2012-12-02T05:20:48.623 に答える
0

すべての変更を一度に保存してみてください:

- (void)viewWillDisappear:(BOOL)animated

ユーザータイプとして常に保存する代わりに、これは少し冗長です。

ユーザーがホーム画面に移動した場合は、変更を保存します

- (void)applicationDidEnterBackground
于 2012-12-02T05:16:08.327 に答える