2009-07-04 6 views
2

私は、さまざまな属性の値に依存する多くの関係を持つ中心的なオブジェクトを持つ、かなり複雑な管理データモデルを持っています。私は、plistのセットを使用してモデルに初期データをインポートしています。それぞれのplistはエンティティクラスの属性を指定し、それらの属性に基づいて関係を埋めます。コア/データ関係ゲッター/セッターの実装/拡張方法

リレーションのゲッターを変更して、属性によって制約されたオブジェクトを自動的に取得したいと考えました。ここでの推論は、管理対象オブジェクトへと輸入ロジックのうち、関係構築を移動するためだったが、例えば、私はそれが飛ぶようすることができませんでした:これは吹いた

-1 #import "SubclassedManagedObject.h' 
0 #import "OtherManagedObject.h" 

1 @implementation SubclassedManagedObject 
2 @dynamic attr1 
3 @dynamic relation1 // which is an OtherManagedObject 

4 - (OtherManagedObject *)relation1 
5 { 
6  if(relation1 != nil) 
7  return relation1; 

8  NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
9  [request setEntity://the OtherManagedObject entity]; 
A  [request setPredicate://predicate based on attr1]; 

B  NSArray *results; 
C  results = [[self managedObjectContext] executeFetchRequest:request//..]; 

D  if([results count]) 
E  relation1 = [results objectAtIndex:0]; 
F } 

仮定SubclassedManagedObject.m

 
error: 'relation1' undeclared (first use in this function) 

とATTR1の値に基づいて述語を構築線Aで:

 
error: 'attr1' undeclared (first use in this function) 
と6行でコンパイルするときまで

私の質問は、私が可能にしたい、あるいはもっと可能性が高い、これを達成する良い方法がありますか?

答えて

2

これは厄介です。 Appleのdocumentationで私の質問に対する答えが見つかりました。

そうにrelation1のゲッター変更の実装:

- (OtherManagedClass *)relation1 
{ 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:// the entity]; 
    [request setPredicate:// predicate using attr1]; 
    NSArray *results 
    results = [[self managedObjectContext] executeFetchRequest:// ...]; 
    if([results count]) 
     return [results objectAtIndex:0]; 
    return nil; 
} 

は私のミスは、従来のアイバーズなどの属性を処理しました。

関連する問題