2012-04-15 21 views
5

私のアプリでは短いセットアッププロセスがあり、名前や個人のその他の詳細を保存するためのNSManagedObjectを作成しますが、この設定では、最後にユーザーが「完了」を押すまでオブジェクトを保存したくありません(彼らは何らかの理由でセットアップを取り消すだけです)。保存しますが、NSManagedObjectをCoreDataに保存しないでください。

実際にCoreDataに保存することなく、セットアッププロセスが終了するまで、短い時間の間、自分の情報を保持しているオブジェクトを保持することは可能ですか?

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

答えて

2

CoreDataを扱うとき、すべての追加/変更/削除アクションがNSManagedObjectContextで発生しますが、そのコンテキストで「保存」を呼び出すまで、変更はディスクに保存されません。

答えは「はい」です。これはすでに取得しているはずの動作です。 NSManagedObjectsのプロパティを追加または変更する場合、これらの変更はコンテキストのメモリに保持されますが、実際に 'save'を呼び出すまではディスクに保存されません。

+1

問題が発生している場所です私は文脈でsaveを呼び出すことは決してありません。詳細を入力しなくても、詳細ビューですべてのフィールドを空白のままにして、オブジェクトのリストに戻り、これにもかかわらずオブジェクトが追加されているのを見てください(null値)。 –

+0

それは、私はちょうど私が間違っていたことを発見したと思う。それに加えて、私は約5ビュー(これは最も有利なことではありません)私のオブジェクトを渡す必要がありますどのように私は簡単にこれを行うことができますか? –

+1

各中間ビューコントローラがオブジェクトとやりとりする場合は、プロパティを使用して連続した各ビューコントローラにオブジェクトを渡すだけです(Navコントローラスタックを使用していると仮定しています)。ビュー2-4がオブジェクトと何も関係がない場合は、5番目のビュー・コントローラーを最初のビュー・コントローラー(元の管理対象オブジェクト参照を取得している場合)の代理人にすることを検討してください。 – isaac

12

また、あなたのコンテキストにそれを挿入せずに管理対象オブジェクトを作成するために

NSEntityDescription *ed = [NSEntityDescription entityForName:@"YourManagedObject" inManagedObjectContext:managedObjectContext]; 
YourManagedObject *obj = [[[YourManagedObject alloc] initWithEntity:ed insertIntoManagedObjectContext:nil] autorelease]; 

を使用することができます。 これは後で[managedObjectContext insertObject:obj];を呼び出して行うことができます。

+0

あなたは私の日を救う!感謝。 :) –

関連する問題