访问ManagedObjectContext

Phe*_*ter 1 core-data objective-c nsmanagedobjectcontext ios

我正在将Core Data集成到一个不是使用Core Data模板创建的应用程序中.我遇到了这方面的问题,可能有一个非常简单的答案.但是,由于大多数关于这个主题的教程都是针对使用模板的,所以我很难过.

我已经按照建议创建了一个选中Core Data的简单应用程序,并将生成的代码复制到我现有的应用程序中.但是,我无法弄清楚如何访问AppDelegate之外的NSManagedObjectContext.我有几个视图控制器,我需要访问托管对象上下文.

我复制到应用程序中的生成代码放在AppDelegate中,以及.pch文件中对CoreData的引用.我错过了什么吗?如何访问托管对象上下文?

谢谢!V

Wee*_*ior 5

我遇到了几周前你面临的同样问题.根据我的研究,我发现通过让AppDelegate将ManagedObjectContext传递给您想要访问它的类来避免僵化是一种最佳实践.你可以像这样完成这个:

在.h文件中为要访问managedObjectContext的类创建属性:

@property (nonatomic, strong) NSManagedObjectContext  *managedObjectContext;
Run Code Online (Sandbox Code Playgroud)

然后综合:

@synthesize managedObjectContext;
Run Code Online (Sandbox Code Playgroud)

将managedObjectContext分配给didFinishLaunchingWithOptions:AppDelegate中方法中的实例变量:

MyClass.managedObjectContext = self.managedObjectContext;
Run Code Online (Sandbox Code Playgroud)

可能有更好的方法可以实现这一目标,但它对我来说效果很好.此外,我的类/视图控制器不需要了解AppDelegate的任何信息.

编辑:根据下面的注释删除了setter方法.