CoreData抛出警告,无法加载实体类

时间:2015-09-02 08:34:11

标签: objective-c macos core-data xcode6

我在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")...]

我搜索了一个解决方案,但无法找到并解决我的问题。我试图命名模型中的实体。但这不起作用。

我希望你能帮助我。

1 个答案:

答案 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类的实例。