2

私は現在iPad用のシンプルなCoreDataアプリに取り組んでいますが、いつ明示的に保存する必要があるのか​​正確にはわかりません。自動保存があることは知っています。ただし、プログラムがクラッシュしないようにするには、明示的に保存する必要があると感じています。プログラムの概要は次のとおりです。

〜これは、入力するテキストフィールドとセグメント化されたコントロールのセットをユーザーに提示するフォームプログラムです。(調査に記入したり、名前、年齢などに関する質問に答えたりする人を考えてみてください)。

〜これらのフィールドはいくつでも入力できます。それらのどれも必須ではありません。

〜ユーザーはいつでもフォームを保存およびロードでき、一度に複数の異なるフォームを保存できます。保存したドキュメントを削除できます

〜私は現在、1つのエンティティオブジェクトがフォームを表すコアデータを使用してこのデータを保存しています。このエンティティオブジェクトには、ユーザーが入力したすべてのフィールドと各フィールドへの応答のリストが含まれています。

〜このエンティティオブジェクトのNSManagedObjectサブクラスもあります。したがって、フィールドに入力するたびに、などの操作を行いますcurrentForm.name = textfield.text

さて、私の質問は、いつ明示的に保存する必要があるのか​​ということです。コアデータが即時保存を実行するなどのコードを記述した場合currentForm.name = textfield.text、またはそうするように明示的に指示する必要がありますか(自動保存を待ちたくないと仮定して)?他に保存しなければならないことはありますか?保存したドキュメントを削除した後、保存する必要がありますか?

ありがとう!

4

3 に答える 3

4

したがって、「自動保存」はありません。AppleがセットアップしたCore Dataテンプレートには、アプリケーションを閉じたときに保存ルーチンが含まれているため、ユーザーがデータを失わないようにするためのフェイルセーフになります。

ユーザーが明示的に何かを保存するとき、または必要と思われるときはいつでも、saveを呼び出す必要があります。

ユーザーがフォームへの入力を完了した後、saveを呼び出します。

currentNotification.name = textfield.textコアデータは即時保存を実行しますか、それとも明示的に指示する必要がありますか(自動保存を待ちたくないと仮定して)?

いいえ、変更はNSManagedObjectContextで行われますが、そのコンテキストでsaveが明示的に呼び出されるまで、データは永続ストアに永続化されません。

于 2012-06-13T17:46:01.680 に答える
2

コアデータの自動保存について聞いたことがありませんか?データを永続化する場合は常に、NSManagedObjectContextでsaveを呼び出す必要があります。これはあなたに似た別の質問です:CocoaとCoreDataを使用した自動保存

于 2012-06-13T17:47:40.143 に答える
0

保存方法は次のとおりです

NSError *error;

    if (![[AppDelegate managedObjectContext] save:&error]) 
{
        NSLog(@"there was an error in Save:%@",error);
    }

私は「早期にそして頻繁に」または少なくともdidEnterBackgroundの通知を保存します

于 2012-06-13T17:45:15.343 に答える