如何在iOS应用程序中传递NSManagedObjectContext?
我正在使用.xibs,我想使用核心数据。最简单的答案是在AppDelegate.h中定义如何在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(一个作者-多本书)
@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也看一看:“……嵌套上下文使您采用“传递接力棒”的方法来访问上下文(通过将上下文从一个视图控制器传递到下一个视图控制器)比直接从应用程序委托检索上下文更为重要。”