我有几个生成的NSManagedObject子类。使用这个article我创建了一个父类(名为Qualifier),我的NSManagedObject子类扩展。通过这种方式,我可以拥有一个没有实体层次结构的类层次结构。
我有一个问题,我不知道在运行时我需要创建哪个子类。我只有一个表示类名的字符串。我在Qualifier类中放置了一个创建特定子类的方法:
+ (instancetype) insertNewObjectFor:(NSString *) qualifierName intoContext:(NSManagedObjectContext *) managedObjectContext {
NSManagedObjectModel *managedObjectModel = [[managedObjectContext persistentStoreCoordinator] managedObjectModel];
Class qualifierClass = NSClassFromString(qualifierName);
NSEntityDescription *entity = [[managedObjectModel entitiesByName] objectForKey:qualifierName];
Qualifier *object = [[qualifierClass alloc] initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext];
return(object);
}
我在目标c上相当新,想要询问更有见识的堆栈交换器,这是否是创建特定实例的可接受方式?
答案 0 :(得分:0)
这很好,尽管步骤多于必要的步骤。我可能会将其简化为:
Qualifier *object = [NSEntityDescription insertNewObjectForEntityForName:qualifierName
inManagedObjectContext:context];