iOS核心数据一对多关系NSSET
Posted
技术标签:
【中文标题】iOS核心数据一对多关系NSSET【英文标题】:iOS core data one to many relationship 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
【问题讨论】:
【参考方案1】:我认为这是不可能的。 Core Data 访问器方法是动态生成的
在运行时,NSSet
用于表示一对多关系。
另请注意,NSSet
documentation 不鼓励您进行子类化:
应该很少需要子类化。如果您需要定制 行为,通常最好考虑组合而不是 子类化。
及以后:
如果您要添加的行为是对现有行为的补充 类,您可以在
NSSet
上写一个类别。但是请记住, 此类别将对NSSet
的所有实例有效 您使用,这可能会产生意想不到的后果。或者, 您可以使用组合来实现所需的行为。
在您的情况下,Company
上的类别方法对所有 employees
进行操作
可能是解决方法。
【讨论】:
以上是关于iOS核心数据一对多关系NSSET的主要内容,如果未能解决你的问题,请参考以下文章
IOS/Objective-C/CoreData:以一对多关系编辑NSSet