Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 找不到实体名称的NSManagedObjectModel_Iphone_Cocoa Touch_Core Data - Fatal编程技术网

Iphone 找不到实体名称的NSManagedObjectModel

Iphone 找不到实体名称的NSManagedObjectModel,iphone,cocoa-touch,core-data,Iphone,Cocoa Touch,Core Data,这是TogleAddProject方法的代码,核心数据代码与Apple的CoreDataBooks示例中的代码几乎相同,但是,当我单击“添加”按钮时,应用程序崩溃,导致entityForName:在以newProjectController.Project开始的行中找不到实体名称“Project”的NSManagedObjectModel -(IBAction)toggleAddProject { NewProjectViewController *newProjectControll

这是TogleAddProject方法的代码,核心数据代码与Apple的CoreDataBooks示例中的代码几乎相同,但是,当我单击“添加”按钮时,应用程序崩溃,导致
entityForName:在以
newProjectController.Project开始的行中找不到实体名称“Project”的NSManagedObjectModel

-(IBAction)toggleAddProject 
{
    NewProjectViewController *newProjectController = [[[NewProjectViewController alloc] initWithStyle:UITableViewStyleGrouped] autorelease];

    // Create a new managed object context for the new project -- set its persistent store coordinator to the same as that from the fetched results controller's context.
    NSManagedObjectContext *addingContext = [[NSManagedObjectContext alloc] init];
    self.addingManagedObjectContext = addingContext;
    [addingManagedObjectContext setPersistentStoreCoordinator:[[fetchedResultsController managedObjectContext] persistentStoreCoordinator]];
    newProjectController.project = (Project *)[NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:addingContext];
    [addingContext release];


    UINavigationController *addNewNavigationController = [[UINavigationController alloc] initWithRootViewController:newProjectController];
    [self.navigationController presentModalViewController:addNewNavigationController animated:YES];  
    [addNewNavigationController release];
}
一切都已合成,项目实体已存在。我不明白它为什么会崩溃。大多数人似乎能够通过在方法本身或viewDidLoad中插入以下代码来修复此错误:

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

当为我的应用程序委托进行修改时,没有任何区别。感谢您的帮助。

Apple文档提供了一些关于调试错误的好信息
entityForName:找不到实体名称“Foo”的NSManagedObjectModel


请参阅核心数据编程指南的一节。

使用调试器并确认您的模型不是零。这是导致此错误的最常见原因。如果不是nil,则查找实体名称中的键入错误。

此错误只有几个可能的来源:

  • 实体名称中的输入错误
  • 无托管对象上下文对象
  • 未能将包含实体的模型添加到上下文使用的持久存储中
  • 未能将正确的持久存储添加到上下文本身
    好吧,我也遇到了这个问题,我就这样解决了。原始代码如下所示:

    Event *event = (Event *)[NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:managedObjectContext];
    
    虽然代码很简洁,但调试器似乎无法显示有关错误位置的更详细信息,因为您正在创建和配置“事件”实体的新实例(或实体的名称)

    相反,我将其分为三行,调试器显示了更多信息:

    Event *event = [[NSManagedObject alloc] init];
    NSManagedObjectContext *moc = [self managedObjectContext];
    event = [NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:moc];
    

    我发现我没有为其中一个属性设置正确的类型,并且我的代码中有一个打字错误,调试器指出了这一切。

    当我有几个不同的
    NSManagedObjectContext
    s时,我遇到了这个问题。调试它的快速方法是检查不同的连接位,并确保在调用上下文之前列出了我的实体

    NSLog(@"Context: %@",context);
    NSLog(@"PS Coord : %@",context.persistentStoreCoordinator);
    NSLog(@"MOM : %@", context.persistentStoreCoordinator.managedObjectModel);
    NSLog(@"Entities : %@",[[context.persistentStoreCoordinator.managedObjectModel entities] valueForKey:@"name"]); 
    

    TechZen非常适合……就我而言,是4。浏览以下链接中的步骤,这将有助于将适当的CoreData方法添加到现有项目中,并正确设置所有内容,从而避免出现错误


    在开发过程中,我找不到后来添加的实体。 对我有用的:(基本上是一个理智的建议)

    每次更改数据模型时卸载应用程序

    数据模型在安装之间由核心数据缓存,以确保完整性。从模拟器/iPhone中删除应用程序,以便能够测试您的更改


    PS:有人知道如何自动完成吗?

    是的,我已经看过了,但还不能解决问题,因此我在这里发帖。Welp,请对已经看过的文档投赞成票。:)我最终以不同的方式处理了这个问题,这个错误现在没有出现。但无论如何,谢谢你,我的代码中没有输入错误,但我确信这是你列出的其他东西之一,最有可能的是moc为零。就我而言,这个问题是解决问题的最好办法。这只是帮助我发现我的persistentStoreCoordinator不存在;I don’我没接好。答对了!!我还没有解决我的问题,但这肯定会引导我走上正确的道路。这里有一篇简短的博文解释了这一点:这里有一篇更详细的博文:“每次更新模型中的某些内容时,都需要创建一个新版本。”是的。。不。我宁愿每次(在初始开发期间)都删除设备上现有的一个。这样,我就不必考虑我刚才所做的改变是否足够轻了。这样,我就有了一个始终有效的工作流程。