После нескольких часов / дней поиска и изучения примеров проектов я пришел к выводу, что мне нужно просто спросить. Если я связываю assetsView (IKImageBrowserView
) напрямую с экземпляром IB NSArrayController
, все работает нормально.
- (void) awakeFromNib
{
library = [[NSArrayController alloc] init];
[library setManagedObjectContext:[[NSApp delegate] managedObjectContext]];
[library setEntityName:@"Asset"];
NSLog(@"%@", [library arrangedObjects]);
NSLog(@"%@", [library content]);
[assetsView setDataSource:library];
[assetsView reloadData];
}
Оба NSLogs
пусты. Я знаю, что что-то упустил ... Я просто не знаю что. Цель состоит в том, чтобы в конечном итоге позволить нескольким экземплярам «библиотеки» этого представления программно фильтроваться с помощью предиката. Сейчас я просто пытаюсь, чтобы он отображал все строки для объекта «Актив».
Добавление: если я создаю NSArrayController
в IB, а затем пытаюсь зарегистрировать [library arrangedObjects]
или вручную установить источник данных для assetsView, я получаю те же пустые результаты. Как я уже говорил ранее, если я связываю library.arrangedObjects
с assetsView.content
(IKImageBrowserView
) в IB - с тем же контекстом управляемого объекта и тем же именем сущности, установленным IB - все работает как ожидалось.
- (void) awakeFromNib
{
// library = [[NSArrayController alloc] init];
// [library setManagedObjectContext:[[NSApp delegate] managedObjectContext]];
// [library setEntityName:@"Asset"];
NSLog(@"%@", [library arrangedObjects]);
NSLog(@"%@", [library content]);
[assetsView setDataSource:library];
[assetsView reloadData];
}