Swift – 使用UITableView深入分析数据
我想构build一个应用程序来导航数据层次结构。 我一直在参考这个向下钻取分层的UITableView页面,并不知道如何使用xml来实现这种节点结构。 我试图避免创build100s的tableviewscontrollers等。从我的理解到目前为止,我相信我需要使用节点。 当我钻完一路后,我将需要使用一个不同的viewcontroller,但我相信我明白这是怎么回事。
这是我的XML文件的一个小例子。 如果有必要,我可以对其进行更改以使其工作。
<hnt> <face> <action id="1"> <name>Occipitofrontalis</name> <type>data</type> <description>data</description> </action> </face> <temporoman> <mandibulardep> <action id="1"> <name>Occipitofrontalis</name> <type>data</type> <description>data</description> </action> <action id="2"> <name>Occipitofrontalis</name> <type>data</type> <description>data</description> </action> </mandibulardep> </temporoman> </hnt> <face> </face>
我正在使用此代码来parsing我的XML文件。 我不知道如何打印出样本。
override func viewDidLoad() { super.viewDidLoad() if let path = Bundle.main.url(forResource: "01 - MainCategories", withExtension: "xml") { if let parser = XMLParser(contentsOf: path) { parser.delegate = self parser.parse() } } } func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { eName = elementName if elementName == "mainCat" { mainCategoriesTitle = String() } } func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { if elementName == "mainCat" { let mCat = MainCategories() mCat.mainCategoriesTitle = mainCategoriesTitle mainCat.append(mCat) } } func parser(_ parser: XMLParser, foundCharacters string: String) { let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) if (!data.isEmpty) { if eName == "title" { mainCategoriesTitle += data } } }
它看起来像parsing器希望生成一个类别的层次结构。 (我没有看到任何匹配的XML示例,但我会假设它在那里)。
首先需要的是一个树形结构的Category
对象。 在最简单的情况下,这是一个NSObject子类,它有一个name
和一个子数组 – 这个重要的是 – 一个Category
数组。
Category上的类方法可以执行xmlparsing。 将xmlparsing为树结构的基本概念是:
- 在启动文件,build立根目录。 使其成为当前节点。
- 在开始元素上,创build一个孩子。 将其设置为当前节点的父级。 使孩子成为当前的节点。
- find其他东西(如字符),在当前节点上设置属性。
- 在end元素上,使当前节点的父节点成为当前节点。
- 在最终文件上,你完成了。
那棵树是另外一个问题正在讨论的树。 只有当你有一个树形结构和正在浏览的当前节点(或当前类别)的概念时,整个想法才是可能的。