现在,我想做类似的事情:
Person *person;
if (createPupil) {
person = [[Pupil alloc] init];
...
} else {
person = [[Teacher alloc] init];
...
}
[self.managedObjectContext save:&error];
但似乎它始终保存在Person-table中。当我试图取小学生或老师时,他们都是空的。是否有可能使这种动态变化?
非常感谢,
的Stefan
答案 0 :(得分:1)
您的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];
另请查看Apple insertNewObjectForEntityForName: inManagedObjectContext:
documentation中的评论。
该方法在Mac OS X v10.4上特别有用,因为您可以使用它 创建一个新的托管对象,而不必知道使用的类 代表实体。这在早期特别有益 类和类名易失时的开发生命周期。