在iOS应用程序中保存第二个实体时出现NSInternalInconsistencyException

时间:2011-11-29 03:13:33

标签: ios objective-c iphone cocoa-touch core-data

我在这里经历了很多问题,但目前还不清楚。

我的应用程序(标签栏应用程序)中有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]);
}
}

1 个答案:

答案 0 :(得分:0)

在您的代码中没有立即跳出来,但根据我的经验,错误经常发生,因为managedObjectContext实例无效,或者因为引用实体或实体属性时出现简单的拼写错误。对于第一个原因,您可以针对上下文设置检查(在创建OtherDetail对象之前),并在nil时实例化它:

if (managedObjectContext == nil) { managedObjectContext = [(MyAppDelegateName *)[[UIApplication sharedApplication] delegate] managedObjectContext];

否则,我会回去查看任何拼写错误。但是,最有可能的是,您在第一个选项卡视图控制器中正确设置了managedObjectContext,而在另一个选项卡中没有。