Also bin ich an iOS-Entwicklung gewöhnt, also bin ich ziemlich glücklich mit NSFetchedResultsController. Dies ist jedoch in der Mac OS X-Umgebung nicht vorhanden. Ich weiß, dass ich NSArrayController als Ersatz verwenden kann. Ich könnte diese Klasse schrecklich falsch gebrauchen, aber es hat bis jetzt funktioniert. ich initialisieren NSArrayController wie folgt:Mac OS X Ersatz für 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);
Dann habe ich auf Veränderungen des NSManagedObjectContext hören und holen und die NSTableView nachladen wie folgt:
[self.conversationsController fetchWithRequest:nil merge:YES error:&error];
NSAssert(!error, error.description);
[self.tableView reloadData];
Wie ich bereits erwähnt, könnte ich dies völlig verwenden falsch, aber ich mag keine Bindungen verwenden. Nun zum eigentlichen Problem: Eine andere Klasse der Anwendung könnte ein NSManagedObject löschen, das von NSArrayController gehalten wird. Der NSArrayController gibt dieses gelöschte Objekt sofort frei und macht es mir unmöglich, herauszufinden, welches Objekt das war. Das letzte Ziel besteht darin, zu wissen, welches Objekt an welchem Index gelöscht wurde, damit ich die Zeilen von NSTableView animieren kann.
Ich hoffe, es ist klar, was ich anstrebe. Danke für jede Hilfe
Warum nicht Sie Bindungen mögen? – Wain
Nun, die NSTableCellViews sind eher benutzerdefiniert. Wäre es nicht viel schwieriger, Bindungen zu verwenden? – lbrndnr