如何阻止Core Data应用程序自动加载managedObjectContext?

时间:2011-03-25 02:27:24

标签: objective-c core-data nsmanagedobjectcontext

我正在构建一个核心数据应用程序,在启动时检查已保存的用户登录,然后设置模型,存储,协调器和上下文。我遇到的唯一问题是,只要用户点击界面中的任何视图,应用程序就会尝试获取managedObjectContext,因为我还没有创建存储,因此会导致异常。

有没有办法阻止它这样做?

干杯。

2 个答案:

答案 0 :(得分:2)

如果您正在使用Apple提供的Coredata样板文件,您会注意到在访问其属性时懒惰地加载了managedObjectContext对象。

只需告诉视图控制器通过其属性(即self.managedObjectContext)访问上下文,而不是直接访问变量,并且将适当地创建上下文,对象模型和持久性存储协调器。

PS:这只是猜测,因为你没有在这里发布任何相关代码。

答案 1 :(得分:0)

为什么要显示依赖于托管对象上下文的视图而不创建它或安排在访问时创建它?

通常的模式是让您的托管对象上下文getter看起来像这样:

- (NSManagedObjectContext *)managedObjectContext {
    if (!_managedObjectContext) {
        // create context, and store it in _managedObjectContext
    }
    return _managedObjectContext;
}

(在此代码中,_managedObjectContext是类中用于保存上下文的ivar)。这样,在需要时可以自动创建上下文。 Apple的标准示例代码就是为您准备的。