0

次の例の Core Data NSManagedObject サブクラスを作成しました。

PBCommentableObject : NSManagedObject // to allow comments on object
@property (nonatomic, retain) NSSet *pBcomments; // unordered set of PBComment objects

PBComment : PBCommentableObject // to allow comments on a comment
@property (nonatomic, retain) PBCommentableObject *target;

PBList : PBCommentableObject // to allow comments on a list
@property (nonatomic, retain) NSOrderedSet *pBorderedItems; // ordered set of PBListableObject objects

PBString : PBListableObject // to allow strings to be added to lists
@property (nonatomic, retain) NSString *pBtext;

PBListableObject : ???? // I'd like both PBList and PBString to be PBListableObjects
@property (nonatomic, retain) PBList *pBlist;

私が抱えている問題は、次の動作が必要なことです。

  • PBList文字列の順序付きリスト ( PBString) またはその他のリスト ( ) を保持できるリスト ( ) PBList
  • PBCommentリスト ( PBList) およびその他のコメント ( ) のコメント ( ) は許可しますPBCommentが、文字列 ( )は許可しませんPBString

これは可能ですか?現在、Xcode のビジュアル インターフェイスを介して Core Data モデルを構築しようとしています。カテゴリを使用することも考えられますが、ビジュアル エディタを介して関係を定義できなかった場合に、Xcode が警告を出さずにどうすればよいかわかりません。

4

1 に答える 1

0

継承のイディオムを広げていると思います。この「一覧表示可能」および「コメント可能」のすべてが、非常に読みにくい複雑さをもたらします。

コメント、リスト、またはあなたが持っているものを許可または禁止することの検証は、(ブール) 属性と関係を使用するだけでモデル化できます。「コメント」や「文字列」などの具体的なオブジェクトのみを考え、属性セットを使用してリストをモデル化するようにしてください。

于 2013-07-23T20:22:33.780 に答える