【问题标题】:iOS core data one to many relationship NSSETiOS核心数据一对多关系NSSET
【发布时间】:2013-10-28 12:22:09
【问题描述】:

我只是想知道是否可以使用自定义类而不是 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。

谢谢,

AJ

【问题讨论】:

    标签: ios core-data


    【解决方案1】:

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

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

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

    及以后:

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多