Iphone 找不到实体名称的NSManagedObjectModel
这是TogleAddProject方法的代码,核心数据代码与Apple的CoreDataBooks示例中的代码几乎相同,但是,当我单击“添加”按钮时,应用程序崩溃,导致Iphone 找不到实体名称的NSManagedObjectModel,iphone,cocoa-touch,core-data,Iphone,Cocoa Touch,Core Data,这是TogleAddProject方法的代码,核心数据代码与Apple的CoreDataBooks示例中的代码几乎相同,但是,当我单击“添加”按钮时,应用程序崩溃,导致entityForName:在以newProjectController.Project开始的行中找不到实体名称“Project”的NSManagedObjectModel -(IBAction)toggleAddProject { NewProjectViewController *newProjectControll
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’我没接好。答对了!!我还没有解决我的问题,但这肯定会引导我走上正确的道路。这里有一篇简短的博文解释了这一点:这里有一篇更详细的博文:“每次更新模型中的某些内容时,都需要创建一个新版本。”是的。。不。我宁愿每次(在初始开发期间)都删除设备上现有的一个。这样,我就不必考虑我刚才所做的改变是否足够轻了。这样,我就有了一个始终有效的工作流程。