Вы должны обращаться к managedObjectContext
только через его получатель, даже из DataController
, как в [appDelegate managedObjectContext]
или appDelegate.managedObjectContext
.
Ваш метод managedObjectContext
должен автоматически устанавливать контекст управляемого объекта;вам не следует писать явные процедуры настройки moc в вашем applicationDidFinishLaunching
и т. д. И стандартный шаблон основных данных написан таким образом.
Теперь, чтобы это работало, делегат приложения должен быть правильнонастроен с точки зрения DataController
.Однако init
вызывается до того, как все настройки IBOutlet
настроены, так что это неправильное место для выполнения операций настройки объектов внутри пера.Вместо этого используйте awakeFromNib
, чтобы сделать эти вещи.awakeFromNib
отправляется каждому объекту после того, как все IBOutlet
и т. Д. Все настроены.
Тем не менее, написание собственного DataController
- это пустая трата времени.Просто создайте экземпляр стандартного NSArrayController
в nib-файле и используйте его в режиме Core Data через привязку.Вам абсолютно не нужно писать запрос на выборку самостоятельно.Изучите собственные образцы кода Apple CoreData, а затем в Google «Учебник по связыванию CoreData», чтобы найти множество учебных пособий, доступных в режиме онлайн.