如何将XML文档加载到NSTableView中?

时间:2011-02-09 12:52:44

标签: objective-c xml cocoa xcode macos

你好,任何人都可以通过教程,指南或示例代码向我指出正确的方向,谢谢,萨米。

3 个答案:

答案 0 :(得分:2)

shreyasva给出的答案很接近但有点误导。

首先,将XML解析为易于管理的Cocoa数据结构是完全正确的。出于性能原因,您不应将表的数据源直接绑定到XML。 yan.kun的建议肯定是可能的,但如果你有“不止一点”的数据,你很可能会遇到性能问题。我强烈建议只将数据解析为NSD阵列对象的NSArray以获取更长的数据集。

其次,如果您不打算以其他方式保留XML文档或者只有少量对象,则Core Data有点矫枉过正。远射过度杀伤力。如果没有充分的理由将应用程序中的每个数据结构窃听到Core Data中也没有必要(通常​​也不合理)。 NSDictionary实例可以很好地缓存解析后的数据以供表视图使用。

第三,没有-tableView:cellForRowAtIndexPath:方法。这似乎让NSTableView与UITableView混淆。由于您指定了Mac标记,请查看NSTableViewDataSource协议。 Cocoa Bindings不是“优于”或“替代”数据源协议。这是“替代”。您可以将解析后的数据加载到NSArrayController(一个字典数组,例如每个“记录”一个),并将表列绑定到它(每个列绑定到数组控制器的arrangeObjects中的字典中的键)或只需使用(简单)表格数据源协议,从文档中复制/粘贴两分钟即可启动并运行。

答案 1 :(得分:0)

我会给你一个关于架构的想法。

  • 使用任何流行的XML解析器NSXMLParser解析XML都没问题。
  • 使用核心数据对象存储数据,如果数据不是太多,请将其保存在内存中。
  • tableView:cellForRowAtIndexPath:
  • 中加载数据

答案 2 :(得分:0)

或者,如果您只想列出内容而无需编辑功能,则可以将XML加载到NSXMLDocument中并通过xPath绑定TableView。