我在Objective-C中编写OS X命令行工具,该工具使用外部框架中的CoreData模型。该框架定义了核心数据模型的每个类。通过包含存档框架在我的项目中引用头文件。但是在创建NSEntityDescription
时,我仍会收到警告,该NSManagedObject
已投放到特定的Klass entity = (Klass *)[NSEntityDescription insertNewObjectForEntityForName:@"Klass" inManagedObjectContext:context];
类:
CoreData: warning: Unable to load class named 'Klass' for entity 'Klass'. Class not found, using default NSManagedObject instead.
执行上述代码时,Xcode会抛出以下警告:
List= [("Mike,"Admin","26,872"),
("John,"Admin","32,872"),
("Mark,"Admin","26,232")...]
我搜索了一个解决方案,但无法找到并解决我的问题。我试图命名模型中的实体。但这不起作用。
我希望你能帮助我。
答案 0 :(得分:0)
我能够解决我的问题。最初,我尝试创建一个新的实体并将其转换为特定的NSManagedObject
类。
SpecificManagedObjectClass *managedObject = (SpecificManagedObjectClass *)[NSEntityDescription insertNewObjectForEntityForName:@"SpecificManagedObjectClass" inManagedObjectContext:context];
现在针对我的具体问题的解决方案如下:
NSEntityDescription *entity = [NSEntityDescription entityForName:[SpecificManagedObjectClass className] inManagedObjectContext:context];
SpecificManagedObjectClass *managedObject = [[SpecificManagedObjectClass alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
因此我写了一个辅助方法:
- (id)getManagedObjectInstanceFor:(id)managedObject in:(NSManagedObjectContext *)context {
NSEntityDescription *entity = [NSEntityDescription entityForName:[managedObject className] inManagedObjectContext:context];
return [[[managedObject class] alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
}
这导致以下呼叫:
SpecificManagedObjectClass *managedObject = [[Utils sharedInstance] getManagedObjectInstanceFor: SpecificManagedObjectClass.class in:self.managedObjectContext];
这给了我一个特定NSManagedObject
类的实例。