上下文在调用时返回null

时间:2015-03-22 20:24:06

标签: ios objective-c xcode

我是objective-c的新手,并且在传递变量时遇到了一些问题......我在View Controller中设置了一个NSManagedObjectContext,但是当我尝试从另一个View Controller访问它时,它返回null。公共变量managedObjectContext在myProjectsViewController中正确设置:

    if (document.documentState == UIDocumentStateNormal)  {
    NSManagedObjectContext *context = document.managedObjectContext;
    _managedObjectContext = context;
    NSLog(@"context = %@",context);
}

然后我尝试在myTasksViewController中访问它:

-(void)setManagedObjectcontext:(NSManagedObjectContext*)managedObjectContext
{
myProjectsViewController *mpvc;
_managedObjectContext = mpvc.managedObjectContext;
}

此时,它始终返回null。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

如果我正确阅读,看起来好像你正在创建一个新的myProjectsViewController实例,而不是引用你期望的对象。

Objective-C是一种面向对象的编程语言。初始化视图时,它会创建myProjectsViewController的“实例”。您在myTasksViewController中显示的代码正在创建myProjectsViewController的另一个“实例”。您将需要将值存储在某处(例如单例),或者可能在转换期间将值从第一个视图控制器传递到第二个视图控制器。

试图举一个例子,假设我们有一个如何建立2015款福特野马的蓝图。我用这个蓝图来制造2015款福特野马,然后我把收音机放到我最喜欢的车站。如果你要采用相同的蓝图并建造另一个相同的2015款福特野马,那么你的野马就不会知道我的Mustang调到哪个广播电台了,因为虽然是用同一型号制造的,但它们是不同的实例。

我希望这会有所帮助。其他人可能会给你一个更好的例子。但是你可能想深入研究一下面向对象的编程,看看是否有助于你对类,对象和对象实例有一个具体的了解。