iOS核心数据一对多关系NSSET

时间:2013-10-28 12:22:09

标签: ios core-data

我只是想知道是否可以使用自定义类而不是NSSET来处理核心数据中的一对多关系?

例如,假设我们有:

@interface Company : NSManagedObject

@property (nonatomic, retain) NSString *companyId;
@property (nonatomic, retain) NSString *companyName;
@property (nonatomic, retain) NSSET *employees;

@end

我想创建一个名为employees的类:

@interface Employees : NSSet

- (void) someCustomMethod;

@end

然后将公司员工的声明更改为

@property (nonatomic, retain) Employees *employees;

当它成功构建时,当我尝试访问Employees的someCustomMethod时会引发异常。可能是因为该对象已创建为NSSET而非Employees。

所以我的问题是,我可以这样做,如果是这样,我如何让员工被创建为员工而不是NSSET。

谢谢,

AJ

1 个答案:

答案 0 :(得分:2)

我认为这是不可能的。核心数据访问器方法是动态生成的 在运行时,NSSet用于表示多对多关系。

另请注意,NSSet documentation不鼓励您进行子类化:

  

应该不需要子类化。如果您需要自定义   行为,通常更好地考虑组成而不是   子类。

以后:

  

如果您要添加的行为补充了现有行为   你可以在NSSet上写一个类别。但请记住,   此类别将对NSSet的所有实例生效   你使用,这可能会产生意想不到的后果。或者,   你可以使用组合来达到理想的行为。

在您的情况下,Company上的一个类别方法可以对所有employees进行操作 可能是解决方法。