В моем проекте большая часть моего стека CoreData была перепечатана с использованием шаблона CoreData в качестве примера. Код в делегате приложения, по сути, создает экземпляр стека Core Data, готовит магазины, все эти забавные вещи.
Основным объектом, с которым вы собираетесь иметь дело (большую часть времени), является контекст управляемого объекта. Совершенно нормально передавать один и тот же (в большинстве случаев бывают раза, когда вам понадобится другой, и вам придется объединить их, но это редко). Я передаю MOC
делегата приложения моему корневому контроллеру представления, который затем передает его любым другим контроллерам представления, которые в этом нуждаются.
Итак, создайте стек в делегате приложения, а затем передайте этот контекст управляемого объекта вашим контроллерам представления по мере необходимости (альтернатива - просто получить к нему доступ, как к одиночке, из вашего делегата приложения, когда это необходимо. если вам не нужно передавать его через весь стек навигации, его можно просто извлечь, когда это необходимо. Это не то, что я сделал, но это, безусловно, правильный способ доступа к вашему стеку).