Выполнить NSFetchRequest при запуске приложения - PullRequest
0 голосов
/ 20 августа 2011

В другом вопросе ( Доступ к делегату NSApplications в другом классе? ) Я спросил о вызове делегата приложения, потому что мне нужен его managedObjectContext для запроса получения.Однако, когда я пытаюсь разрешить отображение всех значений в NSTableView при запуске приложения, у меня возникают проблемы.DataController, мой NSTableViewDataSource, вызывает свой метод init, прежде чем мой делегат приложения вызывает его applicationWillFinishStartup или любой другой метод для инициализации управляемогоObjectContext.Что я делаю неправильно?Как еще можно заполнить NSTableView уже существующими объектами?

1 Ответ

1 голос
/ 20 августа 2011

Вы должны обращаться к managedObjectContext только через его получатель, даже из DataController, как в [appDelegate managedObjectContext] или appDelegate.managedObjectContext.

Ваш метод managedObjectContext должен автоматически устанавливать контекст управляемого объекта;вам не следует писать явные процедуры настройки moc в вашем applicationDidFinishLaunching и т. д. И стандартный шаблон основных данных написан таким образом.

Теперь, чтобы это работало, делегат приложения должен быть правильнонастроен с точки зрения DataController.Однако init вызывается до того, как все настройки IBOutlet настроены, так что это неправильное место для выполнения операций настройки объектов внутри пера.Вместо этого используйте awakeFromNib, чтобы сделать эти вещи.awakeFromNib отправляется каждому объекту после того, как все IBOutlet и т. Д. Все настроены.

Тем не менее, написание собственного DataController - это пустая трата времени.Просто создайте экземпляр стандартного NSArrayController в nib-файле и используйте его в режиме Core Data через привязку.Вам абсолютно не нужно писать запрос на выборку самостоятельно.Изучите собственные образцы кода Apple CoreData, а затем в Google «Учебник по связыванию CoreData», чтобы найти множество учебных пособий, доступных в режиме онлайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...