如何在iOS应用程序中传递NSManagedObjectContext?

如何在iOS应用程序中传递NSManagedObjectContext?,ios,objective-c,core-data,nsmanagedobjectcontext,Ios,Objective C,Core Data,Nsmanagedobjectcontext,我正在使用.xibs,我想使用核心数据。最简单的答案是在AppDelegate.h中定义@property。但是我需要在xml解析器文件中填充我的模型,并且我想要在许多控制器中获取数据。因此,使用[[[UIApplication sharedApplication]delegate]上下文]存在着如此丑陋的问题。 有什么好看的解决方案吗?记住,子类NSManagedObject的每个对象都有上下文。 假设你有(经典的例子)Book和Author。这是ofc的全部。关系1-n(一个作者-多本书)

我正在使用.xibs,我想使用核心数据。最简单的答案是在AppDelegate.h中定义
@property
。但是我需要在xml解析器文件中填充我的模型,并且我想要在许多控制器中获取数据。因此,使用
[[[UIApplication sharedApplication]delegate]上下文]
存在着如此丑陋的问题。
有什么好看的解决方案吗?

记住,子类
NSManagedObject
的每个对象都有上下文。 假设你有(经典的例子)
Book
Author
。这是ofc的全部。关系1-n(一个作者-多本书)

我不知道您试图在这里完成什么,但在许多应用程序中,您都掌握了更多详细信息-。。。视图控制器。回到例子:

假设您的MainViewController是一个
AuthorsViewController
。这是一个有作者的表格视图。你们想点击作者,看看他写了什么书。因此,在
BooksViewController
中,您有一个模型属性:

@property (strong,nonatomic) Author *author;
你可以用很多不同的方式来设置它。自定义设定器,从segue传递。。。没有关系。我相信这是很明显的

这样做之后,您在
BooksViewController
中已经有了一个上下文,这有什么好处呢。每次你写:

self.author.managedObjectContext
这将是正确的上下文


因此,当您有
navigationController
应用程序时,您可以在
AppDelegate
或singleton类或mainVC中创建上下文。您只需调用它一次,然后从您将通过的
NSManagedObject
调用它。

您可以尝试这个很棒的教程:

创建一个singleton
。DataManager
并让它控制对数据存储的访问。是的,我考虑过了。如果没有任何解决方案,我将让Singleton也看一看:“……嵌套上下文使您采用“传递接力棒”的方法来访问上下文(通过将上下文从一个视图控制器传递到下一个视图控制器)比直接从应用程序委托检索上下文更为重要。”