有多种方法可以通过绑定、委托或数据源来填充 NSTableView 的数据。
用 XML-RPC 服务器频繁更改的数据填充 tableview 的最佳方法是什么?我只针对 Mac OS X 10.5,并且有很多关于如何做到这一点的示例,但没有什么非常明确的。
有什么意见吗?
有多种方法可以通过绑定、委托或数据源来填充 NSTableView 的数据。
用 XML-RPC 服务器频繁更改的数据填充 tableview 的最佳方法是什么?我只针对 Mac OS X 10.5,并且有很多关于如何做到这一点的示例,但没有什么非常明确的。
有什么意见吗?
如果我理解正确,这实际上是两个独立的问题。如何获取 XML-RPC 数据,以及如何填充表格视图?
我对 XML-RPC 不太熟悉,但是通过快速浏览一下,您似乎可以使用 NSXML* 类自己进行解析,或者使用几个第三方框架之一。我认为首先查看可用的框架是一个好主意,即使您最终没有使用它们,如果您走这条路,它们也应该让您很好地了解如何自己解析 XML 数据。
从 XML-RPC 请求中获得数据后,您将希望将其存储在控制器类中的某种数据结构中。您可以使用字典数组或基本字符串,或者制作一个自定义对象来表示您的数据,但这实际上取决于您正在做的事情的复杂性。控制器对象将为表格视图提供数据、处理刷新以及您可能需要执行的任何其他任务。您可以直接从控制器发出 XML-RPC 请求,或者您可能希望为此创建一个附加类来分隔代码。
无论您使用数据源方法还是绑定(以及数组控制器)都无关紧要,它们都可以正常工作并且有自己的优势。如果您刚开始使用 Cocoa,请务必使用数据源方法。绑定需要 Objective-C 和 Cocoa 的中级知识,否则很难使用和调试。
我会使用数据源,因为它非常简单和灵活。向 NSTableView 提供数据的对象只需要实现 2 个功能:
对象如何在内部存储数据完全取决于您(灵活性),因此您可以选择最匹配您解析 xml-rpc 响应的方式。
我发现这个 xmlrpc 框架更容易使用。当然,您仍然需要按照前面的说明进行包装,因为这实际上是两个不同的问题/问题。
我不知道最好的方法是什么。我真的不认为有什么好方法,所以“最好的方法”真的会是“最不坏的”方法。
看看Web 服务核心。它是一个用于与 XML-RPC 和 SOAP Web 服务交互的 Carbon API。我只使用了 SOAP 功能,但 XML-RPC 也应该可以工作。这很痛苦,因为它是碳而不是可可;但是您不必编写很多网络代码,这应该是一个胜利。
之后,我会将与 WSCore 对话的所有内容打包到一个类中,并使其实现 NSTableViewDataSource 协议,并将您的表视图指向它作为表的数据源。每次来自 Web 服务的数据发生变化时,只需调用 reloadData 即可让表格视图自行刷新。
祝你好运。OS X 上的 Web 服务支持充其量是痛苦的,因此您将需要它。