CoreData 抛出警告 class for entity could not be loaded

CoreData throws warning that class for entity could not be loaded

我正在 Objective-C 中编写 OS X 命令行工具,它使用来自外部框架的 CoreData 模型。该框架为核心数据模型定义了每个class。通过包含存档框架,在我的项目中引用了头文件。但是在创建一个投射到特定 NSManagedObject class:

NSEntityDescription 时,我仍然收到警告
Klass entity = (Klass *)[NSEntityDescription insertNewObjectForEntityForName:@"Klass" inManagedObjectContext:context];

Xcode 在执行上面的代码时抛出以下警告:

CoreData: warning: Unable to load class named 'Klass' for entity 'Klass'.  Class not found, using default NSManagedObject instead.

我搜索了解决方案,但未能找到并解决我的问题。我试图命名模型中的实体。但这是行不通的。

希望你能帮帮我。

我能够解决我的问题。最初我尝试创建一个新实体并将其转换为特定的 NSManagedObject class.

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 class。