Обычно вам следует избегать получения общих объектов от делегата приложения.Это делает его слишком похожим на глобальную переменную, и с этим связан целый ряд проблем.А синглтоны - это просто причудливые глобальные переменные, поэтому их следует избегать, если в этом нет особой необходимости.
Я бы добавил свойство managedObjectContext
для каждого из ваших контроллеров представления и назначил его при создании.Таким образом, ваши контроллеры представлений не имеют тесной связи с делегатом приложения.
Что касается того, когда извлекать данные, вы должны делать это лениво.Базовые данные действительно быстрые, поэтому я бы подождал до viewWillAppear:
, чтобы сделать выборку.Если вы подождете до viewDidAppear:
, представление уже будет на экране, и при загрузке данных будет мигать.Имейте в виду, однако, что viewWillAppear:
вызывается каждый раз, когда ваш вид станет видимым (например, когда пользователь нажимает кнопку «Назад» на навигационной панели, или контроллер модального вида закрывается), так что вы можете отслеживать,Мы уже загрузили данные и пропускаем загрузку при последующих вызовах.