У меня есть новый вопрос, на который я безуспешно пытался найти ответы в Интернете. Задача проста: я хочу создать приложение на основе документа с основными данными, но изменить значения в некоторых объектах меток. Используя построитель интерфейсов, я могу построить базовую модель данных и заполнить ее, используя контроллер массива, таблицу и т. Д., И все это без написания какого-либо кода. Все идет нормально. Мой тестовый пример - построить базовую модель данных с объектами Box, имеющими атрибуты длины и ширины. Я хотел бы, чтобы метка отображала площадь, то есть длину * ширину для любого геометрически сложного :).
Итак, после просмотра я решил, что мне нужно создать подкласс NSWindowController и использовать его для обновления метки при выборе поля в таблице. Пытались это сделать, но потерпели неудачу. Прежде чем я даже прикреплю этикетку к оконному контроллеру, у меня возникнет проблема. Следуя комментариям к шаблону, я добавил это в Document.m:
- (void)makeWindowControllers
{
NSLog(@"Adding custom Window Controller");
MyWindowController* myWindowController = [[MyWindowController alloc] init];
[self addWindowController:myWindowController];
}
Также добавил это в шаблон MyWindowController.m:
- (id)init
{
self = [super initWithWindowNibName:@"MyWindowController"];
return self;
}
Контроллер окна имеет свой собственный файл NIB из построителя интерфейса, куда я помещаю таблицу и метку и т. Д. Владелец файла установлен на MyWindowController. Наверное, забываю о других вещах, но это то, что я помню сейчас.
Сообщение журнала появляется при запуске, но затем я получаю исключение «этот класс не соответствует кодировке значения ключа для ключа managedObjectContext» до появления окна. Я предполагаю, что у меня нет контроллера окна, подключенного к классу документа должным образом? Другая моя мысль заключается в том, что контроллер массива находится в кончике оконного контроллера, а не в кончике документа, так что, может быть, он ищет не в том месте для managedObjectContext?