我试着解释我的问题。
我有一个第一个视图,我有一些按钮。按下按钮,应用程序打开一个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;
放入root控制器。但在我的情况下,我可以把它放在哪里?我必须创建一个新的控制器?如果是的话,我无法插入
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法
那么,我该如何解决这个问题?
答案 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
方法?