我得到了以下核心数据模型:
ParentEntity(摘要)
以ParentEntity为父级的ChildAEntity
将ParentEntity作为父级的ChildBEntity
我怎么能在运行时得到一个我的子实体数组(或子类名)?
好的我觉得我有一个解决方案,但不确定。我找到了检索父类的子类。也许我应该让我的子类继承我的父类,我将检索我的子类。但令我感到奇怪的是,当一个实体有一个父节点但是生成器时,xCode不会生成继承......
正如我所认为的那样,大多数情况下,如果得到实体A和子实体B,生成的类ClassB应该继承classA?
关于从核心数据模型中检索实体子实体的问题仍然存在。我很想知道如何做到这一点......
以下是如何从目标C类中获取子类。 http://cocoawithlove.com/2010/01/getting-subclasses-of-objective-c-class.html
答案 0 :(得分:0)
假设你有一个实体描述'e',那么你可以通过调用'e.subentities'来获取子实体,它返回一组实体描述。每个实体描述都知道其托管对象类名。现在你可以把它结合起来:
NSEntityDescription *e = ...;
NSArray *subentities = e.subentities;
NSArray *managedObjectClassNames = [subentities valueForKey:@"managedObjectClassName"];
// managedObjectClassNames contains the class names.
或者你可以在没有KVC魔法的情况下做到这一点:
NSEntityDescription *e = ...;
NSArray *subentities = e.subentities;
NSMutableArray *managedObjectClassNames = [NSMutableArray array];
for(NSEntityDescription *subentity in subentities) {
NSString *managedObjectClassName = subentity.managedObjectClassName;
if(managedObjectClassName != nil) {
[managedObjectClassNames addObject:managedObjectClassName];
}
}
// managedObjectClassNames contains the class names.