2

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

例如,假设我们有:

@interface Company : NSManagedObject

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

@end

我想创建一个名为员工的类,例如:

@interface Employees : NSSet

- (void) someCustomMethod;

@end

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

@property (nonatomic, retain) Employees *employees;

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

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

谢谢,

阿杰

4

1 回答 1

2

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

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

应该很少需要子类化。如果您需要自定义行为,通常最好考虑组合而不是子类化。

然后:

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

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

于 2013-10-28T12:48:04.383 回答