0

我创建了以下示例核心数据 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 回答