有没有办法获得NSManagedObjectContext而不必每次都调用我的AppDelegate?

Eth*_*len 3 iphone sdk xcode objective-c uikit

我从Xcode模板创建了一个应用程序,并选择"Core Data"作为选项,因此所有Core Data委托和主要方法都将包含在AppDelegate文件中.

现在,每次我必须获取上下文才能使用Core Data,我使用以下代码:

MovieCatalogAppDelegate *appDelegate = (MovieCatalogAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

无论如何得到managedObjectContext而不需要直接调用MovieCatalogAppDelegate?我想让它成为通用调用,因此我的数据文件不一定绑定到MovieCatalogAppDelegate.h.基本上,我试图解耦代码并使事情更加动态,而无需知道直接名称.

谢谢.

Jab*_*air 5

有几种不同的选择.

  1. 您可以将Core Data支持代码移动到除应用程序委托之外的类中.如果你愿意的话,把它变成单身.

  2. 您可以将托管对象上下文作为每个视图控制器的属性传递.

  3. 如果你有一个NSManagedObject你已经四处传播的东西,你可以NSManagedObjectContextmanagedObjectContext所述对象中获取.

有一些想法这篇文章上CIMGF.