我正在将Core数据集成到一个没有使用Core数据模板创建的应用程序中。我对此有异议,可能有一个非常简单的答案。但是,由于大多数关于这个主题的教程都是针对使用模板的,所以我感到很困惑。
我遵循了创建一个简单的应用程序的建议,检查了Core数据,并将生成的代码复制到我现有的应用程序中。但是,我不知道如何在NSManagedObjectContext之外访问AppDelegate。我有几个视图控制器,在这些控制器中,我需要访问托管对象上下文。
我复制到应用程序中的生成代码被放置到AppDelegate中,以及.pch文件中对CoreData的引用。我是不是遗漏了什么?如何访问托管对象上下文?
谢谢!V
发布于 2013-08-10 17:11:49
有几种方法,你可以分享你的对象上下文围绕你的应用程序。请注意,您需要确保不对不同的线程使用上下文;如果要在后台和前台线程中使用Core数据,则必须添加一些复杂的内容。
您使用的选项取决于您:
[[UIApplication sharedApplication] delegate]获取应用程序委托,并直接从应用程序委托获取CD对象(我不喜欢这种方法,但它可能涉及最少的代码更改)。发布于 2013-08-10 17:44:22
几周前我遇到了你面临的同样的问题。根据我的研究,我发现最好的做法是避免僵化,让您的AppDelegate将ManagedObjectContext传递给您想要访问的类。您可以这样做:
在.h文件中为要访问managedObjectContext的类创建一个属性:
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;然后合成:
@synthesize managedObjectContext;将managedObjectContext分配给AppDelegate中的didFinishLaunchingWithOptions:方法中的实例变量:
MyClass.managedObjectContext = self.managedObjectContext;也许有更好的方法来实现这一目标,但对我来说效果很好。而且,我的类/视图控制器不需要知道任何关于AppDelegate的信息。
编辑:根据下面的注释删除了setter方法。
https://stackoverflow.com/questions/18164264
复制相似问题