Inheritance CoreData:如何动态处理继承?

Inheritance CoreData:如何动态处理继承?,inheritance,core-data,Inheritance,Core Data,e、 在我的CoreData项目中,我有三个班:个人、学生和老师。学生和老师都有一个人作为家长 现在,我想做一些类似的事情: Person *person; if (createPupil) { person = [[Pupil alloc] init]; ... } else { person = [[Teacher alloc] init]; ... } [self.managedObjectContext save:&error]; 但它似乎总

e、 在我的CoreData项目中,我有三个班:个人、学生和老师。学生和老师都有一个人作为家长

现在,我想做一些类似的事情:

Person *person;

if (createPupil) {
    person = [[Pupil alloc] init];
    ...
} else {
    person = [[Teacher alloc] init];
    ...
}

[self.managedObjectContext save:&error];
但它似乎总是保存到人表。当我去接学生或老师时,他们都是空的。是否有可能使这一点变得动态

非常感谢


Stefan

您的if语句已经引入了动态元素。我会这样做:

if (createPupil) {
   Pupil *person = [NSEntityDescription 
      insertNewObjectForEntityForName:"Pupil"
      inManagedObjectContext:self.managedObjectContext];
   // ... configure
} 
else {
   Teacher *person = [NSEntityDescription 
      insertNewObjectForEntityForName:"Teacher"
      inManagedObjectContext:self.managedObjectContext];
   // ... configure

}

[self.managedObjectContext save:&error];
另外,请查看苹果在
insertNewObjectForEntityForName:inManagedObjectContext:
中的评论

该方法在MacOSXV10.4上特别有用,因为您可以使用它 创建新的托管对象而不必知道使用的类 代表实体。这在早期阶段尤其有益 类和类名不稳定时的开发生命周期