2013-07-19 3 views
17

1対多の関係を持つCoreDataオブジェクトを作成したとき、いくつかのメソッド(CoreDataGeneratedAccessors)が得られます。これらのメソッドを実装する必要はありますか?自動的に生成さ 方法は以下の通りである:CoreDataGeneratedAccessorsとは何ですか?

- (void)addCirqitsObject:(Cirqit *)value; 
- (void)removeCirqitsObject:(Cirqit *)value; 
- (void)addCirqits:(NSSet *)value; 
- (void)removeCirqits:(NSSet *)value; 
+5

..あなたを助けることができると思います。それらはCoreData自体によって解析され、適切に処理されます。あなたがそれらに触れないようにしてください(Cirquitsから "s"を削除するような単純な変更でさえそれらを壊すでしょう)。一部のプロジェクトでは – borrrden

+0

を見ましたが、いくつかの実装が行われています。理由は何でしょうか? –

+0

オーダーされたセットのアクセサーは、プロジェクトをオーバーライドしないため、プロジェクトでオーバーライドされません。議論[ここ](http://stackoverflow.com/questions/7385439/exception-thrown-in-nsorderedset-generated-accessors)。 –

答えて

9

あなたはそれらのメソッドを実装する必要はありませんが、することができます。あなたがそうしない場合、CoreDataはそれらを動的に生成します。

デフォルトの実装を上書きする場合は、Core Data Programming Guide (Custom To-Many Relationship Accessor Methods)を読んでサンプル実装を探してください。

新規のCirqitオブジェクトを追加または削除する前後に、追加の計算や更新をトリガーする理由があります。 サンプルの実装コードを変更しないように注意してください。カスタムコードを追加するだけです。そうしないと、関係処理が中断する可能性があります。

+3

"CoreDataGeneratedAccessorsとは何ですか?"今すぐ答えはそれらを実装するかどうかについて説明します。 – kgaidis

0

コアデータで生成されたアクセサをオーバーライドできます。あなたはwillChangeValueForKeyとdidChangeValueForKeyを呼び出すようないくつかの特別なことに注意を払わなければなりませんが、アクセサーをオーバーライドするもの以外は常にほとんど同じです。

礼儀: - https://stackoverflow.com/a/9659750/1865424

私はこれらのリンクはありません、あなたがそれらを実装する必要はありません

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html

関連する問題