【问题标题】:Xcode app delegate to each view controllerXcode 应用程序委托给每个视图控制器
【发布时间】:2012-06-19 12:45:13
【问题描述】:

我一直在编写 Xcode 教程,无法解决这个问题。教程是 here

我得到的错误是:

+entityForName: 找不到实体名称“Contact”的 NSManagedObjectModel

在此行(我已将目的地更改为联系方式):

Contact *contact = (Contact *)[NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:managedObjectContext];

我很确定问题是因为我没有完成第 11 点,因为我不确定如何使用 Xcode 4.3.2 和故事板来完成。有人知道吗?

【问题讨论】:

  • 该错误与教程中的第 4 步和第 5 步有关。确保您正确拼写实体名称,它也区分大小写。此错误与情节提要无关。
  • 在coremodel中添加“联系人”,删除设备中的应用程序并运行后。也许这就是问题
  • 嗯,实体的拼写肯定是正确的。而且我再次完成了教程,代码没有问题。 @SimonePistecchia 您如何将“联系人”添加到核心模型?
  • cxdatamodel。如果您进行了更改,请删除并重新安装该应用。
  • 好吧,我下载了你提到的教程的代码,它工作正常。没有显示任何错误。

标签: iphone xcode delegates


【解决方案1】:

您可以将上下文传递给下一个视图控制器,就像 Stephens 的回答一样。但是,您还必须记住通过添加将上下文属性添加到新视图控制器

@property(nonatomic,retain) NSManagedObjectContext *context;

到你的头文件和

@synthesize context;

到你的实现文件。

您可以执行以下操作来检查是否获得上下文:

在你的 viewdidload 中:

if (context == nil) 
{ 
    context = [(YOURAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
}

如果这没有帮助。尝试重置您的模拟器,因为当您使用 Coredata 时,它似乎会出现很多错误。

我希望这会有所帮助!

【讨论】:

  • 我已经完成了这些指南,如果我记录上下文我得到“”(或数字变体),但是当我调用保存函数时它仍然崩溃:NSInternalInconsistencyException 出于上述相同的原因。
  • @Patrick 如果我错了,请纠正我,但我没有提前 5 小时向您发布正确答案,并且上下文名称不同?
  • 哦,是的,我的错!一定有两个问题,因为这并没有立即解决它!干杯
【解决方案2】:

假设实体存在,您似乎更有可能从第 10 点开始遗漏以下内容:

enterDataViewController.managedObjectContext = self.managedObjectContext;

无论是那个还是你的 managedObjectContext 都没有在应用委托中正确设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2018-01-01
    • 2015-08-22
    • 2011-12-29
    • 1970-01-01
    • 2013-10-29
    • 2020-09-20
    相关资源
    最近更新 更多