2012-03-03 8 views
2

NSManagedObjectのインスタンスを、Core Dataストアにすぐに格納すべきではないインスタンスを作成したいとします。NSManagedObjectの一時インスタンス

後でインスタンスを保存したい場合があります。

これは可能ですか(NSManagedObjectサブクラスの単純なalloc/initは許可されていません)?

ありがとうございました。

答えて

2

なぜオブジェクトを後で保存する必要があるのか​​尋ねることはできますか?あなたの質問に与えられた情報で

私は言う:あなたが言うように、あなたは常にドキュメントからNSManagedObject

の指定イニシャライザを使用する必要があります、ので、いいえ、それは不可能です。

NSManagedObjectは、 entity.initWithEntity:insertIntoManagedObjectContext: に適切なクラスのサブクラスを自動的に作成することによって、 Objective-C 2プロパティー機能(「宣言されたプロパティー」を参照)をサポートする動的クラス生成を使用しますエンティティの適切なクラスのインスタンスを返します。 動的生成サブクラスは、 エンティティによって指定されたクラスに基づいているため、モデルにカスタムクラスを指定すると、 がallocに渡されます。

+0

ありがとう、私は新しいオブジェクトを作成するためにModalDialogを表示したいと思います。そのため、このオブジェクトのインスタンスを使用したいと思います。これには、私が必要とするいくつかの納得のいく方法があります。ユーザーがダイアログで「キャンセル」を選択すると、インスタンスを保存せずに破棄したいと考えています。ユーザが「ストア」と言う場合に限り、インスタンスは永続化されるべきです。 – mica

+0

ModalDialogを表示するときにオブジェクトを作成する必要があると仮定します。そうでない場合は、ユーザーが「Store」をタップするとオブジェクトを作成し、そうでなければ何もしません。 ModalDialogにオブジェクトが必要な場合は、「キャンセル」をタップしたときにdeleteObjectを呼び出すことをお勧めします。それが私のやり方です。 –

+0

実際、それを行うことができる方法は、コンテキストなしでオブジェクトを初期化することです。つまり、initWithEntity:insertIntoManagedObjectContext:を呼び出し、コンテキストとしてnilを渡します。次に、ユーザーが「Store」をタップすると、[context insertObject:object]を呼び出します。必要に応じてコンテキストを保存します。ユーザーが「キャンセル」をタップすると、オブジェクトはコンテキストに関連付けられず保存されないため、これはあなたのケースでは機能します。 –

関連する問題