2017-02-15 10 views
0

私はオブジェクトを初期化してそれを移入したいが、永続的なストアには追加しない。私は、フォーム上のユーザーを持って、管理オブジェクトのフィールドにデータを追加したいが、ユーザーが保存ボタンを押すと保存するだけです。コアデータ - オブジェクトを初期化し、永続ストアに追加しない方法

私は、ユーザーがキャンセルした場合、それは、関連する

+2

managedObjectContextでオブジェクトを作成するときに、単にmanagedObjectContextでsaveを呼び出さないでください。あなたのケースで** **呼び出さない** AERecord.save() –

答えて

1

であれば、ちょうどこのような管理対象オブジェクトコンテキストからオブジェクトを削除AERecord coreDataラッパーを使用しています:

[object deleteInContext:managedObjectContext];

link

0
を参照してください

作成時に使用するコンテキストを教えてください。たとえば、指定された初期化子はinit(entity:insertInto:)ですが、2番目の引数はオプションです。パスしないでください。後で、insert(_:)メソッドを使用して、マネージオブジェクトコンテキストに追加することができます。

+0

https://developer.apple.com/reference/coredata/nsmanagedobject/1506357-init - コンテキストがnilでない場合、このメソッドは[context insertObject :self](これによりawakeFromInsert()が呼び出されます)。つまり、awakeFromInsertを呼び出さず、OPがデフォルト値を手動で設定する必要があります。また、彼が関係を持っている場合、それらの関係は確立されません。しかし、NSManagedObjectContextのsaveを呼び出すことを避けて、要求したPersistentStoreにオブジェクトを保存したりプッシュしたりすることはありませんが、それでも問題のない有効なオブジェクトを与えます。 –

+0

あなたのアプローチでは、オブジェクトが実際に必要であることが分かっている前に、オブジェクトが不要な場合は、オブジェクトを削除する余分な手順も必要です。そうしないと、不要なオブジェクトを保存しないようにコンテキストを再度保存してはいけません。どちらの方法も合併症がある。 –

+0

物事を過度に複雑化しないでください、それは**簡単な削除です**、それ以上はありません。 CoreDataは、100万分の1秒の間に、すべての関係や他のすべてを処理します。 awakeFromInsert()を呼び出すことを避け、NSManagedObjectと他のすべての施設のデフォルト値をすべて取得しないようにする必要があった場合でも** NSManagedObjectContextに挿入されていなくても**(これは大規模な手順と複雑さです)単純に基本的なdeleteObjectを呼び出すのと比較して、IFをキャンセルした場合、後者を選択します。しかし、私はあなたの答えは有効なオプションだと思う。 –

関連する問題