0

我试图解释我的问题。

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

  • AppDelegate.h/m
  • viewcontroller.h/m 控制第一个视图
  • Entity1TableViewController.h/m 控制由该
    按钮在第一个视图中打开的表视图
  • .xcdatamodel

所以,直到我在 tableview 中,一切都是正确的。我把这个

 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;

放入根控制器。但就我而言,我可以把这个放在哪里?我必须创建一个新的控制器?如果是,我不能插入

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

方法。

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

4

1 回答 1

0

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

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

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

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

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

//.m
@synthesize context;

然后,从不同的元素,例如应用程序委托(如果您已经在那里设置了核心数据堆栈),您可以创建YourController并注入它。

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

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

于 2012-06-18T12:51:11.930 回答