2

你能帮我理解如何解决这个问题吗?我正在尝试在我可以跨多个项目使用的静态框架中添加 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);
}

}

谢谢,迈克尔

4

3 回答 3

3

可能这里是捆绑的问题?尝试NSManagedObjectModel使用此方法加载您的:

[MagicalRecord setDefaultModelFromClass:[self class]];

我在为 CoreData 实施单元测试时遇到了同样的错误。

于 2013-06-05T11:53:36.830 回答
2

我在我的一个项目中遇到了同样的问题,原因是我没有将实体添加到.xcdatamodeld文件中。

所以确保你有一个实体APIContent在你的.xcdatamodeld

还要确保在向您添加实体时.xcdatamodeld,您的实体名称和类是相同的(您可以在Data Mode Inspector选项卡中进行检查)

于 2013-04-25T10:04:00.200 回答
-1

除了确保您的核心数据实体被正确命名/存在之外,还要确保您的 .xcdatamodeld 文件被正确命名

当我的 .xcdatamodeld 标题为“Model.xcdatamodeld”而不是“NameOfProject.xcdatamodeld”时,我遇到了同样的问题。

我在我的 coredata 实现 (CoreData.m) 文件中将我的模型名称设置为我的项目名称,所以当我编译并运行项目时,它正在寻找一个“NameOfProject.xcdatamodeld”文件,但该文件名为“Model.xcdatamodeld” .

如果您犯了同样的错误,请在更正 .xcdatamodeld 后确保从您的测试设备上卸载该应用程序,因为之前的设置不会更新,并且您的更正只会在您在测试设备上重新安装该应用程序时实施.

(您只需在 xcode 中运行项目即可重新安装应用程序)

于 2014-12-12T00:25:16.347 回答