Iphone 如何从模式视图中使用托管数据上下文?(核心数据)
我已经建立了一个核心数据结构。在我的申请委托中,我有:Iphone 如何从模式视图中使用托管数据上下文?(核心数据),iphone,core-data,modalviewcontroller,Iphone,Core Data,Modalviewcontroller,我已经建立了一个核心数据结构。在我的申请委托中,我有: - (void)applicationDidFinishLaunching:(UIApplication *)application { // Configure and show the window. RootViewController *rootViewController = [[RootViewController alloc] initWithStyle:UITableViewStylePl
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// Configure and show the window.
RootViewController *rootViewController = [[RootViewController alloc] initWithStyle:UITableViewStylePlain];
NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
// Handle the error.
}
rootViewController.managedObjectContext = context;
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController = aNavigationController;
[_window addSubview:[_navigationController view]];
[_window makeKeyAndVisible];
[rootViewController release];
}
Tl;dr:此代码为我的数据设置指向托管对象上下文的指针,然后将根视图控制器的managedObjectContext设置为其managedObjectContext
然后,我调出一个模态视图,让用户添加数据。但要保存此数据,我需要访问managedObjectContext上下文,因为这就是保存数据的方式
foo *myFoo = (foo *)[NSEntityDescription insertNewObjectForEntityForName:@"Foo" inManagedObjectContext:managedObjectContext];
…但是如果没有对托管对象上下文的访问权,我就不能调用它。?
如何从模式视图访问rootViewController的managedObjectContext。我遇到了这个问题,想到了两种解决方案
- 当保存的不仅仅是简单的数据时,它会变得更容易李>
- 将用户信息文档化很麻烦李>
- “添加实体”对话框应该能够添加实体,对吗
//... In your interface:
NSManagedObjectContext *moc;
//... beneath your interface:
@property (nonatomic, retain) NSManagedObjectContext *moc;
然后别忘了根据需要进行合成和释放。接下来,在根视图中,在显示mod视图之前传递上下文:
//... Create Modal VC, then...
[modalViewController setMOC:self.managedObjectContext];
// Now, present the modal VC
轰,模态视图中有一个主运行中心。根据需要调用save。请注意,如果您忘记传递MOC,则当您尝试执行获取请求时,您的应用程序将崩溃 好主意,谢谢!!除此之外,如何将其传递给模态视图控制器?是否有一个“[自我呈现的Modalviewcontroller:mvc动画:是的](当你在做的时候,把这个MOC传过来);”方法?编辑:代码格式化失败,对不起,我不知道如何…不,没有这样的方法。您可以在创建它之后将其传入,也可以覆盖
presentModalViewController:animated:
,并在显示视图控制器之前将其添加进去。但是,我建议使用更简单的第一种方法。在展示视图控制器之前先把它传过来。Ps:在第一个“之后,你有一个额外的空间。哦,是的,我想我确实知道怎么做了,我只是感到困惑。非常感谢,我想它成功了!!不客气。:-)(别忘了做一个好公民,记下正确的答案。;-)