CJ.*_*CJ. 14 inheritance cocoa core-data subclass
我有一个核心数据模型,我有一个实体A,这是一个抽象.实体B,C和D继承自实体A.实体A中定义了几个由B,C和D使用的属性.
我想在我的模型代码中利用这种继承.除了属性之外,我想知道我是否可以向实体A添加方法,这些方法在它的子实体中实现.
例如:
executeFetchRequest:检索B的所有实例我试过这个,但在调用方法时,我收到:
[NSManagedObject methodName:]:发送到实例的无法识别的选择器
我认为这是因为返回的executeFetchRequest:对象是某种代理对象.
有没有办法利用子类NSManagedObjects来利用继承?
我真的希望能够做到这一点,否则我的模型代码将负责确定它正在处理什么类型的NSManagedObject并根据类型执行特殊逻辑,这是不可取的.
任何帮助表示赞赏,提前谢谢.
Yuj*_*uji 25
它应该工作.返回的对象executeFetchRequest:是NSManagedObjects(或其子类)的实例.在CoreData中使用自定义类的步骤如下.假设您有实体A和B,其中B继承自A.然后您需要两个自定义类
@interface A:NSManagedObject{
}
-(void)someMethod:(NSString*)a;
@end;
@interface B:A{
}
-(void)someMethod:(NSString*)a;
@end;
Run Code Online (Sandbox Code Playgroud)
然后在XCode数据建模器中设置它们,如下所示:

这样,CoreData会自动将正确的类分配给NSManagedObject从数据库中获取的类.
Ale*_*lex 18
如果您收到该异常,则表示Core Data未使用您的自定义类.这里的关键是NSManagedObject- 这是为数据存储中的对象创建的对象Core Data.
如果您还没有,则需要创建一个继承自的类,在那里NSManagedObject添加自定义方法,然后将实体设置A为在对象模型工具中使用自定义类.如果实体B,C,D等有具体的行为,你应该继承您为实体创建的类A,并指定这些实体使用子类了.
从本质上讲,您有一个并行层次结构:一个实体层次结构,另一个类别.对于对象模型中的每个实体,您最终可能会得到实体X和类X.
| 归档时间: |
|
| 查看次数: |
8459 次 |
| 最近记录: |