lbr*_*dnr 8 cocoa core-data nstableview appkit nsarraycontroller
所以我习惯了iOS开发,所以我对NSFetchedResultsController非常满意.但是,这在Mac OS X环境中不存在.我知道我可以使用NSArrayController作为替代品.我可能正在使用这个类非常错误,但它一直工作到现在.我初始化NSArrayController如下:
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);
Run Code Online (Sandbox Code Playgroud)
然后我听取NSManagedObjectContext的更改并获取并重新加载NSTableView,如下所示:
[self.conversationsController fetchWithRequest:nil merge:YES error:&error];
NSAssert(!error, error.description);
[self.tableView reloadData];
Run Code Online (Sandbox Code Playgroud)
正如我之前提到的,我可能使用这个完全错误,但我不喜欢使用绑定.现在来看实际问题:应用程序的另一个类可能会删除NSArrayController持有的NSManagedObject.NSArrayController立即释放这个删除的对象,使我无法确定哪个对象.最终目标是知道什么索引被删除了哪个对象,这样我就可以为NSTableView的行设置动画.
我希望我的目标很明确.谢谢你的帮助
NSTableView 中没有任何部分,因此不存在 1:1 替换
但 NSArrayController 是一个势均力敌的匹配!它还获取 CoreData 实体并对其进行排序。
对于 UI,您可以使用绑定(但当然您不必这样做)
例如参见:
http://cocoadevcentral.com/articles/000080.php
归档时间: |
|
查看次数: |
1713 次 |
最近记录: |