правый.
Кажется, что методы init и windowDidLoad windowController - это неправильные места для заполнения массива таблицы. Хотя я не совсем уверен, почему.
Однако все, кажется, работает нормально, когда я жду, пока завершится awakeFromNib оконного контроллера, вот так:
- (void)awakeFromNib {
[super awakeFromNib];
[self populateTable];
}
Затем метод populateTable использует переменные экземпляра IBOutlet, которые подключаются в .xib от владельца файла (мой оконный контроллер) к NSArrayControllers, которые содержат NSManagedObjects.
Может ли быть так, что метод awakeFromNib элементов, которые упорядочены иерархически глубже в xib, запускается быстрее, чем awakeFromNib, из элементов, расположенных выше в структуре xib?
У меня также были некоторые проблемы с обнаружением, что выбор контроллера массива возвращает NSObjectControllerProxy вместо фактического выбранного управляемого объекта.
MyManagedObject *object = [myArrayController selection];
Выше код не работает.
Следующая строка кода делает свое дело, хотя мне это кажется немного сложным ..
MyManagedObject *object = [[myArrayController arrangedObjects] objectAtIndex:[myArrayController selectionIndex]];