具有异步数据的NSBrowser / NSTreeController

时间:2014-03-14 22:10:08

标签: cocoa nstreecontroller nsbrowser

我有一个需要显示来自REST API的数据的NSBrowser。有时这个API需要一段时间才能返回结果,因此在后台处理网络流量(延迟提取)会很不错。有时需要刷新子树以反映服务器端的更改。

我尝试了两种不同的方法:

  1. 使用NSBrowserDelegate。当[browserDelegate browser:child:ofItem:]或类似函数最终请求尚未加载的数据时,我返回0计数并启动后台处理。当数据可用时,我重新加载了列(效率不高,随着新数据的进入,用户的选择会混乱)。
  2. 使用NSTreeController。我使用阻塞/同步方法可以很好地工作。但是,每当我更新模型时,NSBrowser都会重置树并将选择移动到父级。我尝试过[obj mutableArrayValueForKey]方法。我已经尝试过[treecontroller insertObject:atArrangedObjectIndexPath:]方法。我已切换"保留选择"旗。我已切换"选择插入"。无论我做什么,NSBrowser都不想干净地更新相关的子树。
  3. 结论:将数据异步加载到NSBrowser中的最佳做法是什么?

0 个答案:

没有答案