Итак, я привык к разработке iOS, поэтому я очень доволен NSFetchedResultsController. Однако этого нет в среде Mac OS X. Я знаю, что я могу использовать NSArrayController в качестве замены. Я мог бы использовать этот класс ужасно неправильно, но он работал до сих пор. я инициализировать NSArrayController следующим образом:Замена Mac OS X для NSFetchedResultsController
NSArrayController* newConversationsController = [NSArrayController new];
newConversationsController.managedObjectContext = context;
newConversationsController.entityName = entityName;
newConversationsController.sortDescriptors = sortDescriptors;
newConversationsController.automaticallyRearrangesObjects = YES;
NSError* error = nil;
[newConversationsController fetchWithRequest:nil merge:NO error:&error];
NSCAssert(!error, error.description);
Тогда я слушаю изменений NSManagedObjectContext и выборки и перезагрузить NSTableView следующим образом:
[self.conversationsController fetchWithRequest:nil merge:YES error:&error];
NSAssert(!error, error.description);
[self.tableView reloadData];
Как я уже упоминал ранее, я мог бы использовать это полностью неправильно, но я не люблю использовать привязки. Теперь к актуальной проблеме: другой класс приложения может удалить объект NSManagedObject, хранящийся NSArrayController. NSArrayController мгновенно освобождает этот удаленный объект и не позволяет мне выяснить, какой именно объект был. Конечная цель - узнать, какой объект был удалён, чтобы я мог анимировать строки NSTableView.
Надеюсь, это ясно, на что я нацелен. Спасибо за любую помощь
Почему вы не любите привязки? – Wain
Ну, NSTableCellViews довольно обычны. Разве не было бы намного сложнее использовать привязки? – lbrndnr