所以我習慣了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];
正如我前面提到的,我可能會使用這種完全錯了,但我不喜歡使用綁定。 現在到了實際問題:應用程序的另一個類可能會刪除NSArrayController持有的NSManagedObject。 NSArrayController立即釋放這個被刪除的對象,並使我無法找出那是哪個對象。最終目標是要知道哪些對象的哪些索引已被刪除,以便可以對NSTableView的行進行動畫處理。
我希望這很清楚我的目標。 感謝您的幫助
你爲什麼不喜歡綁定? – Wain
那麼NSTableCellViews是相當自定義的。那麼使用綁定不會更難嗎? – lbrndnr