0

コアデータ生成クラス「item」があります。別のクラスである「タイプ」のプロパティがあります。

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

しかし、どういうわけか、アイテムを削除したときにもこの追加処理が行われています。具体的には、NSManagedObjectContext で「保存」を呼び出すまでは発生しません。

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

追加の処理コードの中でいくつかの計算を実行するため、これは私にとって問題になるでしょう。そこに「アイテムの種類が設定された回数」のカウンターをいくつか格納しているふりをしましょう。削除と nil への設定をカウントしたくありません。しかし、これは正当な更新である可能性があるため、nil をチェックすることもできません (タイプとして nil が許容される場合があります)。

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

アップデート

タイプが削除されると、実際にその属性が nil に設定されることが判明しました。データ エンティティの削除規則がデフォルトで無効になっていることに気付きました。アクションなしに変更すると、この問題は発生しません。

そこで問題は、削除ルールを nullify から変更すると、他にどのような影響があるかということです。これが賢明なデフォルトと見なされるのはなぜですか?

4

1 に答える 1

1

「タイプ」が存在しなくなると、それへの迷子のポインタを持つことは危険になる可能性があるため、 nullify は賢明なデフォルトのようです。ドキュメントで NSNoActionDeleteRule を調べると、次のように書かれています。

「このルールを使用する場合、オブジェクト グラフの整合性を維持する責任があります。このルールは、上級ユーザー以外には使用しないことを強くお勧めします。」

于 2012-04-13T14:56:43.720 に答える