将 NSTableView 连接到 XML-RPC 服务器

发布于 2024-07-09 00:25:12 字数 161 浏览 8 评论 0原文

有多种方法可以通过绑定、委托或数据源来填充 NSTableView 的数据。

使用 XML-RPC 服务器中经常更改的数据填充表视图的最佳方法是什么? 我仅针对 Mac OS X 10.5,并且有很多关于如何执行此操作的示例,但没有非常明确的示例。

有什么意见吗?

There are multiple ways to fill an NSTableView up with data through either bindings, delegates, or data sources.

What is the best way to go about filling up the tableview with data that is changed pretty frequently from an XML-RPC server? I'm targeting Mac OS X 10.5 only and there are lots of examples on how to do it, but nothing very definitive.

Any opinions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

提笔书几行 2024-07-16 00:25:12

如果我理解正确的话,这实际上是两个不同的问题。 如何获取 XML-RPC 数据以及如何填充表视图?

我对 XML-RPC 不太熟悉,但快速浏览一下,您似乎可以使用 NSXML* 类自己进行解析,或者使用几个第三方框架之一。 我认为首先查看可用的框架是个好主意,即使您最终没有使用某个框架,它们也应该让您了解如何自己解析 XML 数据(如果您采用这种方法)。

一旦从 XML-RPC 请求中获得数据,您将希望将其存储在控制器类的某种数据结构中。 您可以使用字典或基本字符串数组,或者创建一个自定义对象来表示您的数据,但这实际上取决于您正在执行的操作的复杂性。 控制器对象将为表视图提供数据、处理刷新以及您可能需要执行的任何其他任务。 您可以直接从控制器发出 XML-RPC 请求,或者您可能希望为此创建一个附加类来分隔代码。

无论您使用数据源方法还是绑定(以及数组控制器)并不重要,它们都可以正常工作并且有自己的优点。 如果您刚刚开始使用 Cocoa,一定要使用数据源方法。 绑定需要 Objective-C 和 Cocoa 的中级知识,否则将很难使用和调试。

If I'm understanding correctly, it's really two separate questions. How do I fetch XML-RPC data, and how to populate a tableview?

I'm not too familiar with XML-RPC, but from doing a quick look around it seems like you can either do the parsing yourself with the NSXML* classes, or use one of several third party frameworks. I think it would be a good idea to look at the available frameworks first, even if you don't end up using one they should give you a good idea of how to go about parsing the XML data yourself if you go that route.

Once you have your data from the XML-RPC request, you'll want to store that in some sort of data structure in a controller class. You could use an array of dictionaries or basic strings, or make a custom object to represent your data, but that really depends on the complexity of what you're doing. The controller object will provide data to the table view, handle refreshing, and any other tasks you may need to do. You could make the XML-RPC request directly from the controller, or you may wish to create an additional class for this to separate the code.

Whether you use data source methods or bindings (along with an array controller) doesn't really matter, they both work fine and have their own advantages. If you're just starting with Cocoa, definitely use data source methods. Bindings requires intermediate knowledge of Objective-C and Cocoa, and will be hard to use and debug otherwise.

蓝眸 2024-07-16 00:25:12

我会使用数据源,因为它非常简单且灵活。 向 NSTableView 提供数据的对象只需要实现 2 个函数:

  1. 返回行数
  2. 返回给定行/列的对象 对象

如何在内部存储数据完全取决于您(灵活性),因此您可以选择最匹配的内容如何解析 xml-rpc 响应。

有关 NSTableViewDataSource 的更多信息

I would use data source because it's very simple and flexible. Your object that provides the data to NSTableView only needs to implement 2 functions:

  1. return number of rows
  2. return an object for a given row/column

How the object stores the data internally is totally up to you (flexibility) so you can choose whatever matches best how you parse the xml-rpc response.

More about NSTableViewDataSource

待天淡蓝洁白时 2024-07-16 00:25:12

我发现这个 xmlrpc 框架更容易使用。 当然,您仍然需要按照之前的说明进行包装,因为这些实际上是两个不同的问题/问题。

I found this xmlrpc framework much easier to use. You will of course still need to do the wrapping as explained before as these are really two different questions/problems.

指尖凝香 2024-07-16 00:25:12

我不知道最好的方法是什么。 我真的不认为有什么好的方法,所以“最好的方法”实际上是“最不糟糕”的方法。

看一下 Web 服务核心。 它是一个用于与 XML-RPC 和 SOAP Web 服务交互的 Carbon API。 我只使用了 SOAP 功能,但 XML-RPC 应该也可以工作。 这很痛苦,因为它是碳而不是可可; 但是有很多网络代码你不必编写,这应该是一个胜利。

之后,我会将与 WSCore 对话的所有内容包装到一个类中,并使其实现 NSTableViewDataSource 协议,并将表视图指向它作为表的数据源。 每次来自Web服务的数据发生变化时,只需调用reloadData即可让表视图自行刷新。

祝你好运。 OS X 上的 Web 服务支持充其量是痛苦的,所以您将需要它。

I don't know what the best way is. I don't really think there's a good way, so the "best way" is really going to be "the least worse" way.

Take a look at Web Services Core. It's a Carbon API for interacting with XML-RPC and SOAP web services. I've only used the SOAP functionality, but the XML-RPC should work as well. It's painful because it's Carbon and not Cocoa; but there's a lot of networking code you won't have to write which should be a win.

After that, I would wrap up all of the stuff talking to WSCore into a single class and make it implement the NSTableViewDataSource protocol and just point your table view at it as the table's data source. Every time the data from the web service changes, just call reloadData to get the table view to refresh itself.

Good luck. Web service support on OS X is painful at best, so you're going to need it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文