2012-04-13 4 views
0

私はコアデータ生成クラス 'item'を持っています。それは別のクラスである '型'のプロパティを持っています。コアデータの理解と削除後のNSManagedObjectContextの保存

他の処理が行われるように 'setType'をカスタマイズしました。たとえば、 'dateTypeLastSet'を更新します。今のところうまくいきます。

ただし、何らかの理由により、この追加処理はアイテムを削除しても発生しています。具体的には、NSManagedObjectContextで 'save'を呼び出すまでは発生しません。

これは、削除によって 'setType:nil'が自動的に呼び出されるためですか?パラメータを記録すると、NULLが試行された割り当てであることが示されます。

私の追加の処理コードの中にいくつかの計算を実行するので、これは私にとっては問題になります。私はそこに「アイテムのタイプが設定された回数」の何らかのカウンターを保管しているとしよう。私は削除とカウントがカウントされないように設定したくありません。しかし、これは正当なアップデート(型が受け入れられるかもしれないので無し)かもしれないので、単にnilをチェックすることはできません。

説明やアドバイスをいただければ幸いです。

UPDATE

それはタイプが削除されたとき、それは確かにnilにその属性を設定しないことが判明 - 私は、データエンティティの削除規則は、デフォルトでは無効であることに気づきました。それを何も行動に変えないなら、私はこの問題を抱えていません。

ここで問題になる - 削除ルールを無効にすることによる他の影響は何ですか?なぜこれは合理的なデフォルトと見なされますか?

答えて

1

「タイプ」がもう存在しなくなると、それに対する迷いのポインタを持つことは危険になる可能性があるため、nullifyは賢明なデフォルトです。あなたがドキュメントにNSNoActionDeleteRuleを見れば、それは言う:

このルールを使用する場合」、あなたがオブジェクトグラフの 整合性を維持する責任がある。このルールは強く すべてが、上級ユーザーのために推奨されません。 "

+0

次に、setTypeメソッドでカスタムコードを使用する方法がわかりません。アイテムを削除すると常に呼び出されるためです。 –

+0

私は、明示的な設定としてのnilと、システムが使用する必要がある値としてのnilの違いによると思います。ヌル値である '型'オブジェクトを定義し、それを明示的なsetTypeに使用できますか? ... NSNullの使い方の一種? –

+0

できます。私はちょうどそれについて私が思うには不快感を感じる。 –