2012-02-23 3 views
4

私のNSManagedObjectサブクラスには、エンティティのNSSetに分割するNSString ivarがあります。私は文字列を設定することができるようにしたいと思いますし、呼び出しを保存するときに分割を行いますが、文字列を設定するだけで汚れたフラグや保存する必要はありません。NSManagedObjectをダーティとマークする方法はありますか?

+0

あなたはこの質問に対する答えを考え出しましたか? – SAHM

答えて

0

「ivar」の代わりに「属性」を意味するとします。文字列をセットに分割してセットを保存するというスキームはおそらく議論の余地がありますが、ここでは問題ではないと思います。

なぜ管理オブジェクトを「ダーティ」とマークする必要がありますか?これは本当に必要ではありません。ちょうどそれを保存する、汚いかどうか!

管理対象オブジェクトの「汚れ」をどのようにチェックするのか分かりませんが、ある時点で保存をトリガーするとします。その時点で、自分自身のBOOL「dirtyFlag」をチェックして、適切に設定してチェックできるようにすることもできます。

これらの種類のものを明示的にする方が常に良いです。コードはより読みやすく透明になります。

+0

いいえ、MOCファイルではなく、サブクラスのivarです。それは全くデータベースに触れません。 -willSaveで文字列を分割したい。 – jarjar

+0

文字列から分割する部分を保存しますか? – Mundi

+13

オブジェクトをダーティにマークしたい場合は、次のNSManagedObjectContextObjectsDidChangeNotificationに更新されたオブジェクトとして表示されるようにします。候補者であるNSFetchedResultsControllersはそれに気付き、それを再評価します。 – rgeorge

0

あなたは+ (BOOL)contextShouldIgnoreUnmodeledPropertyChangesNSManagedObjectあなたのサブクラスを実装し、むしろデフォルト(YES)よりNOを返すことができます。

これにより、NSManagedObjectContextはデータベース内の実際の列で表されていなくても、変更のプロパティを通知されます。

関連する問題