Objective c insertNewObjectForEntityForName:
我使用Xcode.xcdatamodel文件编辑器设置了一个实体。我创建了一个名为Person的实体,添加了一些属性,然后生成了一个.m文件来表示它。一切正常 现在,当我写一行代码时,比如: Person * person = (Person*)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext]; Person*Person=(Person*)[n实体描述 insertNewObjectForEntityForName:@“个人” inManagedObjectContext:managedObjectContext]; 我得到: 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“+entityForName:找不到实体名称“Person”的NSManagedObjectModel”Objective c insertNewObjectForEntityForName:,objective-c,iphone,core-data,Objective C,Iphone,Core Data,我使用Xcode.xcdatamodel文件编辑器设置了一个实体。我创建了一个名为Person的实体,添加了一些属性,然后生成了一个.m文件来表示它。一切正常 现在,当我写一行代码时,比如: Person * person = (Person*)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectC
不过,我完全遵循了位置示例,我相信这是一步一步地进行的,但我想我一定错过了某个关键的“注册”步骤,我告诉Xcode我的Person实体应该可以访问。。此外,我根本没有办法“初始化”managedObjectContext,位置示例似乎也没有做到这一点。您没有设置MOC这一事实几乎肯定是问题所在。最具体地说,这意味着您可能没有加载定义Person的MOM(托管对象模型)。在代码的某个地方,您应该有如下内容:
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];
像这样的:
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];
像这样的:
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];
我只是从核心数据模板的AppDelegate中复制行(如果您创建了一个使用核心数据的新应用程序,您会得到这些行)
如果您拥有所有这些,请确保在构建的编译源代码步骤中列出了xcdatamodel。当然,还要确保Person实际上是xcdatamodel中的实体名称。实体名称与类不同,尽管它们通常被设置为相同。您需要核心数据的init
-(void)initCoreData{
NSError *error;
//Path to sqlite file.
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/Documents/Level4.sqlite"];
NSURL *url = [NSURL fileURLWithPath:path];
//init the model
NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
//Establish the persistent store coordinator
NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];
if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]){
NSLog(@"Error %@",[error localizedDescription]);
}else{
self.context = [[[NSManagedObjectContext alloc ] init ] autorelease];
[self.context setPersistentStoreCoordinator:persistentStoreCoordinator];
}
[persistentStoreCoordinator release];
}
您应该检查NSManagedObjectContext对象是否为nil e、 g
这有助于提醒我,我没有将NSManagedObject传递到下一个视图,这就是为什么我会出现上述错误。谢谢