2011-07-31 9 views
5

質問は簡単です:いつNSManagedObjectContextのsave:(NSError **)errorメソッドを使うべきですか?私が唯一理解していることから、変更されたデータは永続ストアに保存されます。 Xcodeテンプレート生成アプリケーションデリゲートは、applicationWillTerminateのsave:メソッドを呼び出すだけで十分ですか?私のコードについていつNSManagedObjectContextのsave:メソッドを使用するのですか

詳細:

  • マルチスレッド
  • 私は、単一のNSPersistentStoreCoordinator
  • データは、バックグラウンドスレッドに変更し使用しています(したがって、複数のNSManagedObjectContext年代を使用して、バックグラウンドで操作をしています) mergeChangesFromContextDidSaveNotification:
  • を使用してマージされています。詳細はお問い合わせください。

私はそれをいつ呼び出すべきかに関するガイドラインを見つけることができなかったので、私はあなたにすべて尋ねることにしました。あなたの返信を前にありがとう!

答えて

6

データを保存する場合は、必ずsave:を呼び出す必要があります。 applicationWillTerminateが必ず呼び出されるとは限りません。例えば、メモリの問題のためにアプリケーションがクラッシュした場合(または他の何かが原因で)、これは呼び出されません。

保存するデータを実際に生成しているアクションをユーザーが完了すると、データを保存します。

+0

また、Webから新しい情報を取得してモデルに追加するなどのバックグラウンドタスクでは、追加が完了したら保存しますか?ご回答有難うございます! – Koen

+0

はい - 完了したら保存します。 ManagedObjectContextはスレッド固有であることを覚えておいてください。したがって、あなたのために保存する背景スレッドを作成しないでください。 – dtuckernet

+0

同じスレッドで 'save:'を呼びますNSManagedObjectContextを作成します。ほとんどの場合、バックグラウンドスレッドが使用されます。開始と保存が同じスレッド上で行われている限り、問題はありません。 – Koen

関連する問題