在阅读stackoverflow中的几个问题之后,我目前仍然找不到答案。
我无法将ManagedObjectContext从appdelegate传递到我的tabbarcontroller视图。
在我的appdelegate.m中我有这个
#import "memoView.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
memoView *mView = (memoView *)navigationController.topViewController;
mView.ObjectContext =[self managedObjectContext];
}
在memoView.m
中- (void)viewDidLoad
{
[super viewDidLoad];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"NoteLog" inManagedObjectContext:[self ObjectContext]];
[fetchRequest setEntity:entity];
NSError *error;
self.memoInfo = [ObjectContext executeFetchRequest:fetchRequest error:&error];
//self.title = @"Memo";
[fetchRequest release];
}
错误原因:'+ entityForName:无法找到实体名称的'NSManagedObjectModel''NoteLog''
我不确定我做错了什么,我对核心数据相对较新。
任何评论都表示赞赏。
答案 0 :(得分:2)
我曾经遇到过这个问题并且解决了这个问题:
YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
self. ObjectContext = appDelegate.ManagedObjectContect;
答案 1 :(得分:1)
我个人实施Singleton for my CoreData Stack。 - 但是以更安全的方式like here.
单例模式基本上是“全局变量”的借口。虽然如果正确实施并明智地使用了最强大的模式之一。简单来说,它的作用是:它创建一个类的对象,如果它尚不存在,则将其存储在该对象类的静态变量中。并且由于类变量的内容在该类的所有实例中是相同的(显然),下次当您尝试分配类的实例时,它会检查它是否在之前分配,以及它是否返回旧实例。 / p>
因此,您基本上可以从任何地方“分配”,无论您经常想要什么,并且您将始终获得相同的对象。
然后人们倾向于将这个单例类称为“DataManager”或类似的东西。
答案 2 :(得分:1)
您在哪里放下以下代码?当您分配mView
时,我猜mView.ObjectContext
为零:
#import "memoView.h"
memoView *mView = (memoView *)navigationController.topViewController;
mView.ObjectContext =[self managedObjectContext];