我只是想知道是否可以使用自定义类而不是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
答案 0 :(得分:2)
我认为这是不可能的。核心数据访问器方法是动态生成的
在运行时,NSSet
用于表示多对多关系。
另请注意,NSSet
documentation不鼓励您进行子类化:
应该不需要子类化。如果您需要自定义 行为,通常更好地考虑组成而不是 子类。
以后:
如果您要添加的行为补充了现有行为 你可以在
NSSet
上写一个类别。但请记住, 此类别将对NSSet
的所有实例生效 你使用,这可能会产生意想不到的后果。或者, 你可以使用组合来达到理想的行为。
在您的情况下,Company
上的一个类别方法可以对所有employees
进行操作
可能是解决方法。