0

アプリにサブクラスがNSManagedObjectあり、変更をいつどのように保存するかを理解しようとしています。
私は自分自身を説明しようとします、例えばクラスANSManagedObjectサブクラスです。
アプリのライフサイクル中に私は次のことを行います。

App launched
...
Create an instance of class A
...
Change some properties of A instance
...
App go to background
...
App becomes active again
...
Change some more properties of A instance
...
App terminates

[context save:]をいつ呼び出す必要がありますか??
インスタンスを変更するたびに呼び出しますか?それとも、アプリがバックグラウンドに移行したときにのみ呼び出すのでしょうか?
Aインスタンスの作成または削除後に呼び出す必要がありますか?

4

3 に答える 3

1

saveを呼び出すまで、データは永続ストアに保存されません。だから、それはあなたがあなたのアプリに何を望むかに依存します。これまでに持っていた最後の値を回復できるようにする場合は、変更するたびに保存する必要があります。

簡単な変更は、変更を加えた後に保存することです。

一定の時間が経過した後にのみ保存するなど、もう少し凝ったことを行うことができます。そのため、多くの変更がグループ化されます...そして、アプリをバックグラウンドに置いて保存するイベントをキャッチします...

ただし、これはUIManagedDocumentが自動的に行うことなので、代わりにそれを使用できます。

于 2012-06-04T20:03:48.333 に答える
1

優れたアプローチは、UIManagedDocumentをAppDelegateに配置することです。その後、アプリで何らかの変更(クラッシュなど)が発生するたびに[コンテキスト保存]を呼び出すことができます。私が従うのが好きな順序は次のようなものです。

  1. UIManagedDocumentオブジェクトを作成し(アプリケーションでロードされた場所など)、プロパティに割り当てます
  2. ドキュメントをセットアップします(ディスク上に存在するか、すでに開いているかなどを確認し、それに応じて応答します)
  3. UIManagedObjectContextをアプリの最初のUIViewControllerに渡します(そこから、コンテキストを他のView Controllerに渡すことができます)

UIManagedドキュメントは、コンテキストを保存します。

UIManagedDocumentのドキュメントを参照して、永続的なストアオプションを構成します(オプションのNSDictionaryをUIManagedDocumentインスタンスに送信します。以下のリンクから最初の例を参照してください)。

UIManagedDocumentドキュメント: http ://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIManagedDocument_Class/Reference/Reference.html

また、iTunesU(2011年秋)で無料で入手できるPaul HegartyによるiPhoneおよびiPadアプリケーション開発コースのCoreData講義とデモ(講義13および14)も参照してください。

于 2012-06-04T20:17:11.883 に答える
1

行った変更の量と、変更ごとに保存する必要のあるデータの量に応じて、少しずつ保存するか、大量に保存するかを選択できます。文字列、数値、またはブール値を保存するだけの場合は、変更が加えられたらすぐに、コンテキストでsave:を呼び出します。

大量のデータがある場合は、変更をまとめてから、メインキューをブロックしないように、バックグラウンドキューに保存することをお勧めします。このようにして、保存を実行するためにバックグラウンドに移動するのを待つ必要はありません。

ティム

于 2012-06-04T20:21:21.880 に答える