Я использую какао-связывания для связывания NSTableView
с Core Data
как следующийЧто такое autoPreparesContent и автоматическиRearrangesObjects NSArrayController для?
_arrayController = [[MyArrayController alloc] init];
[_arrayController setEntityName:@"User"];
[_arrayController setManagedObjectContext:self.managedObjectContext];
[_arrayController setUsesLazyFetching:NO];
[self.tableView bind:NSContentBinding toObject:self.arrayController withKeyPath:@"arrangedObjects" options:nil];
[_arrayController fetch:nil];
и все, кажется, работает хорошо.
Но одна вещь, которую я не понимаю, - это эффект от automaticallyPreparesContent
и automaticallyRearrangesObjects
свойств NSArrayController. Согласно документации, оба по умолчанию равны NO
, и я тоже их не изменил. Doc говорит
Если флаг ДА и контекст управляемого объекта установлен, исходное содержание извлекается из контекста управляемого объекта с использованием текущей выборки предиката. Контроллер также регистрируется как наблюдатель в контексте управляемого объекта. Затем он отслеживает вставки и удаления своего объекта с помощью уведомлений контекста и, при необходимости, обновляет его массив содержимого.
и я думаю, что это означает, что если флаг НЕТ, массив содержимого не обновляется вновь вставленными объектами в контекст управляемого объекта. Но он обновляется, когда я вставляю новый управляемый объект в контекст управляемого объекта. Что я неправильно понимаю?
И, о automaticallyRearrangesObjects
Doc говорит
Устанавливает, будет ли автоматически перестраивает его содержимое приемника, чтобы соответствовать текущей сортировке дескрипторов и фильтр предикаты.
Это означает, что, если флаг НЕТ, содержимое не перестраивается, даже если дескрипторы сортировки контроллера массива или предикат фильтра изменены. Но это! Когда я изменяю предикат фильтра или дескрипторы сортировки, строки в представлении таблицы, привязанные к контроллеру массива, переупорядочиваются.
Я совершенно смущен тем, чего не знаю или неправильно понимаю поведение NSArrayController.
Если я отключу «Подготовить контент», мне нужно обязательно написать код или я могу использовать сборку интерфейса для извлечения данных? (В моем случае NSArrayController привязан к NSComboBoxCell) – aneuryzm