2010-11-20 1 views
2

を拡張IはCoreDataGeneratedAccessorsとNSManagedObjectサブクラスを有する:オブジェクトが追加または上記アクセサを使用して除去されている場合、私が実行するいくつかの他のコードをがCoreDataGeneratedAccessors動作

- (void)addCoursesObject:(Course *)value; 
- (void)removeCoursesObject:(Course *)value; 
- (void)addCourses:(NSSet *)value; 
- (void)removeCourses:(NSSet *)value; 

必要。

私は効果的に実装ファイルには、このような何かをしたい:NSManagedObjectは「-addCourseObject」を持っていないため

-(void)addCoursesObject:(Course *)value { 
    [super addCoursesObject:value]; 
    … my additional code here … } 

しかし、スーパー意味がありません。コースNSSetのオブザーバを追加することはおそらく1つのアプローチのようですが、独自のアクセッサを実装し、それがどのように動作するかを定義したいと思います。@synthesizedアクセサが既定の動作を超えて実装されたときと同じです。

そこには、[[super ...]の行に類似した、元の動作を呼び出す方法がありますか?

思考?他のアプローチ?

ありがとうございました。

答えて

4

アクセサーをオーバーライドすることはできません。あなた自身を.mファイルに書き込むだけで済みます。

データモデルエディタで、リレーションシップを選択すると、コンテキストメニューから "Objective-C 2.0実装をクリップボードにコピー"を選択できます。それはあなたにアクセサの機能的スケルトンを与えるでしょう。簡単にカスタマイズすることができます。

+0

コピーについてのヒント。私はドキュメントで十分なものを見つけ出しましたが、最初に何をするのかメニュー項目を認識していれば、大量の作業を省くことができました。次回は、私は適切に武装します。ありがとう、TechZen。あなたのために19k + 1。 ;) – Woodster

+0

残念ながら、Xcode 5ではコピーコンテキストメニューが表示されません。 –

7

Xcode 4では、クリップボードへのコピー機能がなくなっているようです。別の方法は、コードスニペットライブラリ(ビュー/ユーティリティ/コードスニペットライブラリ)に行き、 "Core Data xxx Accessors"ファイル。あなたは、このような方法を取得します:

- (void)add<#Capitalized relationship name#>Object:(<#Relationship destination class#> *)value {  
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1]; 
    [self willChangeValueForKey:@"<#Relationship name#>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; 
    [[self primitiveValueForKey:@"<#Relationship name#>"] addObject:value]; 
    [self didChangeValueForKey:@"<#Relationship name#>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; 
    [changedObjects release]; 
} 

、あなたはその後、< #Capitalized関係名#>、< #Relationship先クラスの#>と< #Relationship名#>を置き換えるカスタムコードを追加する必要があります。 (私はARCを使っているので[changedObjects release]も削除しなければならなかった)

+2

この方法には注意してください。私はこの回答を投稿して以来、実際にオブジェクトを削除していないいくつかの削除メソッドに問題がありました。メソッドを削除してカスタムコードを呼び出しレベルに移動すると、再び機能しました。私は今、アップルがこれらのコードスニペットを最新に保っていない可能性があり、そうすることはおそらく悪い考えです。 – Symmetric

関連する問題