您能帮助我了解如何解决此问题吗?我试图在我可以在多个项目中使用的静态框架中添加Magical Record和我的CoreData数据库。
我得到的例外情况如下:
+ entityForName:无法在此模型中找到名为“APIContent”的实体。
请在我的模型中运行代码:
(void) insertOrUpdate:(NSDictionary *) objectDictionary {
@try {
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
APIContent *product;
// Check if Object Exists
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", [objectDictionary objectForKey:@"id"]];
product = [APIContent MR_findFirstWithPredicate:predicate inContext:localContext];
BOOL objectIdNotFound = product == nil ? TRUE: FALSE;
if (objectIdNotFound) {
product = [APIContent MR_createInContext:localContext];
}
// Import Values from the NSDictionary object
[product MR_importValuesForKeysWithObject:objectDictionary];
[localContext saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
if (success) {
DDLogCInfo(@"Object saved successfully.");
} else {
DDLogError(@"Object NOT saved successfully");
}
}];
}
@catch (NSException *exception) {
DDLogError(@"Class: %@ Function: %s at Line: %d \n Exception: %@", [self class], func, LINE, exception);
}
}
谢谢, 迈克尔
答案 0 :(得分:3)
这可能是捆绑的问题?尝试使用此方法加载NSManagedObjectModel
:
[MagicalRecord setDefaultModelFromClass:[self class]];
我在为CoreData实现单元测试时遇到了同样的错误。
答案 1 :(得分:2)
我的一个项目遇到了同样的问题,原因是我没有将实体添加到.xcdatamodeld
文件中。
因此,请确保您的APIContent
.xcdatamodeld
的实体
另外,请确保向.xcdatamodeld
添加实体时实体名称和类别相同(您可以在数据模式检查器标签中查看)
答案 2 :(得分:-1)
除了确保正确命名/存在核心数据实体之外,还要确保正确命名.xcdatamodeld文件
当我的.xcdatamodeld标题为'Model.xcdatamodeld'而不是'NameOfProject.xcdatamodeld'时,我遇到了同样的问题。
我在我的coredata实现(CoreData.m)文件中设置了我的模型名称作为我的项目名称 所以当我编译并运行项目时,它正在寻找一个'NameOfProject.xcdatamodeld'文件,但该文件被称为'Model.xcdatamodeld'。
如果你犯了同样的错误,在你纠正了.xcdatamodeld之后一定要从你的测试设备上卸载应用程序,因为以前的设置不会更新,你的更正只会在你重新安装应用程序时实现你的测试设备。
(您只需在xcode中运行项目即可重新安装应用程序)