+ entityForName:找不到实体名称的NSManagedObjectModel' Ditloide'在第二种观点

时间:2012-06-18 11:31:04

标签: core-data entity nsmanagedobjectcontext

我试着解释我的问题。

我有一个第一个视图,我有一些按钮。按下按钮,应用程序打开一个tableview。我的项目中有这些文件:

  • AppDelegate.h /米
  • viewcontroller.h / m来控制第一个视图
  • Entity1TableViewController.h / m通过tha来控制tableview打开 第一个视图中的按钮
  • .xcdatamodel

所以,直到我在桌面视图中一切都是对的。我推迟了这个

 NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
 NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
 NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Ditloide" inManagedObjectContext:context]; 

当我按下按钮时,我收到错误:

+entityForName: could not locate an NSManagedObjectModel for entity name 'Ditloide' in a second view

我读了其他帖子,我发现了类似的内容:

MainViewController *controller = (MainViewController *)self.window.rootViewController;
controller.managedObjectContext = self.managedObjectContext;

放入root控制器。但在我的情况下,我可以把它放在哪里?我必须创建一个新的控制器?如果是的话,我无法插入

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法

那么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不太确定我理解你的问题。

错误是由于您没有正确设置MOC。有关详细信息,请参阅insertNewObjectForEntityForName:

问题是:您是否正确设置了核心数据堆栈?你能分享一些代码吗?

然后,关于您看到的代码,它的目标是在需要的地方注入上下文。例如,假设您有一个名为YourController的控制器,它需要上下文。您可以在YourController中创建一个属性,如下所示:

//.h
@property (nonatomic, retain) NSManagedObjectContext* context; // or strong if you ARC

//.m
@synthesize context;

然后,从另一个元素,例如app delegate(如果你在那里设置了核心数据堆栈),你可以创建YourController并注入它。

YourController* yourCtr = // alloc-init
yourCtr.context = [self managedObjectContext];

最后,你是什么意思如果是,我不能插入- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法