IOS newb在核心数据方面苦苦挣扎。 Xcode示例项目将核心数据放入app delegate中。然后在app delegate.m文件中,在application didFinishLaunchingWithOptions:
方法中,它包含对核心数据文件的调用:controller.managedObjectContext = self.managedObjectContext;
,它会激活主控制器中的managedobjectcontext。
然而,我已经读过,app委托文件并不是你应该放置核心数据的地方,而是你应该把它放在模型文件中并将其称为单例。
我的问题是如果你将它从app委托文件移到没有application didFinishLaunchingWithOptions:
方法的文件中,你如何确保托管对象上下文在你需要的地方可用,即在其他视图控制器中?换句话说,如果所有核心数据都在模型文件中,那么从控制器文件调用它的正确语法是什么,或者使其可用于模型文件中的控制器文件。
这个问题让我疯狂了两个星期所以非常感谢任何建议。
答案 0 :(得分:1)
请参阅此示例:http://www.objc.io/issue-10/networked-core-data-application.html
github上有源代码的链接,它显示了将coreData代码从AppDelegate移动到单独的模型类PersistentStack的一种方法。在该示例中,AppDelegate仍然通过PersistentStack实例间接维护对托管对象上下文的引用。
根据模块化的需要,还有许多其他方法可以将coredata代码分离到单独的类中。