我在这里经历了很多问题,但目前还不清楚。
我的应用程序(标签栏应用程序)中有5个标签,每个标签负责将一些细节推送到1个表格中。因此实际上每个选项卡都有一个表。
我正确初始化managedObjectContext
并成功保存了实体中的数据。现在当我尝试将数据推送到第二个表时,我得到了这个例外:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用,原因:'+ entityForName:无法找到实体名称的NSManagedObjectModel'OtherDetail' *
是否有必要一次性将数据推送到所有实体?
(void)persistOtherDetail:segCtrlValue:genInfoId:type:labelValue{
NSLog(@"Persisting %@",type);
NSLog(@"seg control value %@", segCtrlValue);
OtherDetail *otherDetail = (OtherDetail *)[NSEntityDescription insertNewObjectForEntityForName:@"OtherDetail" inManagedObjectContext:managedObjectContext];
otherDetail.enteredValue = segCtrlValue;
otherDetail.genInfoId = genInfoId;
otherDetail.checklistDesc = labelValue;
otherDetail.checklistName = type;
NSError *error;
if (![managedObjectContext save:&error])
{
NSLog(@"Problem saving: %@", [error localizedDescription]);
}
}
答案 0 :(得分:0)
在您的代码中没有立即跳出来,但根据我的经验,错误经常发生,因为managedObjectContext
实例无效,或者因为引用实体或实体属性时出现简单的拼写错误。对于第一个原因,您可以针对上下文设置检查(在创建OtherDetail对象之前),并在nil时实例化它:
if (managedObjectContext == nil) { managedObjectContext = [(MyAppDelegateName *)[[UIApplication sharedApplication] delegate] managedObjectContext];
否则,我会回去查看任何拼写错误。但是,最有可能的是,您在第一个选项卡视图控制器中正确设置了managedObjectContext
,而在另一个选项卡中没有。