核心数据上下文和单身数据控制器

我有一个单身数据控制器来保存一个对象的数组。 看看我的解决scheme香蕉问题: singelton dataController banansArray

现在我想将香蕉arrays保存到持久状态。 这个核心数据教程: 核心数据存储图像使我对Core Data有了很好的总体理解,在将我的数据Controller更改为singleton之前,我可以将它包含在我的应用程序中。

现在什么是最好的?

我是否需要将生成的核心数据堆栈在应用程序委托内移动到pipe理香蕉数组的单一数据控制器? 或者,我必须像使用Core Data模板生成的Master-View控制器那样在应用程序委托中设置单例的上下文?

在那种情况下,我如何在appDelegate中设置上下文? 这在AppDelegate应用程序didFinishLaunchingWithOptions:不起作用(它适用于模板中的masterView) didFinishLaunchingWithOptions:

 DataControllerSingleton *dataController; dataController.managedObjectContext = self.managedObjectContext; 

在提供的beerDataModel示例中,ManagedObjectCode是:

 if (_mainContext == nil) { _mainContext = [[NSManagedObjectContext alloc] init]; _mainContext.persistentStoreCoordinator = [self persistentStoreCoordinator]; } 

根据你的问题,我认为这是个人select。 例如,在我的项目中,我更喜欢维护一个用于pipe理核心数据堆栈的单例类,并在整个应用程序中使用它。 我宁愿将应用程序委托清理干净。

无论如何,现在如果你使用Core Data,那么pipe理对象数组的旧单例就不再有用了。 使用核心数据,您可以从持久性存储中获取对象的graphics(例如)。 显然你需要正确地devise你的模型(实体,关系等)。 就你而言,例如,具有正确属性的Banana实体是正确的select。

为了看到一个单例类在BeerDataModel.h/.m看到BeerDataModel.h/.m 。 这是一个非常好的方法。 它可以像下面一样使用。

 NSManagedObjectContext *mainContext = [[BeersDataModel sharedDataModel] mainContext]; 

PS改变BeersDataModel中的BananasDataModel或者你喜欢什么名字。