Swift NSXML需要循环来创建多个子节点

时间:2015-01-24 21:44:57

标签: xml macos cocoa swift

使用Swift / cocoa我正在创建一个输出XML文件的用户输入表单。 (初学者到上述所有。)

用户将添加多个目标,但在尝试创建多个“目标”时出现错误。

流程是:用户输入他们想要创建的目标数量(7,8或9)。每个目标都有用户输入的信息,因此有“x”个目标。我使用for循环但在尝试创建下一个目标时遇到错误。以下是我在操场上的代码。

(如果我取消注释//expedition.addChild(target),我收到错误。)

如何创建这些多个目标子项?

let root = NSXMLElement(name: "exploration_game")
let xmlFile = NSXMLDocument (rootElement: root)
let expedition = NSXMLElement(name: "expedition")
root.addChild(expedition)
expedition.addChild(NSXMLElement(name: "name", stringValue: ""))
expedition.addChild(NSXMLElement(name: "targets", stringValue: ""))
expedition.addChild(NSXMLElement(name: "difficulty", stringValue: ""))
expedition.addChild(NSXMLElement(name: "factoid", stringValue: ""))
expedition.addChild(NSXMLElement(name: "factoid_file", stringValue: ""))
let target = NSXMLElement(name: "target")
expedition.addChild(target)

for index in 1...3{
  //expedition.addChild(target)

        target.addChild(NSXMLElement(name: "target_title_en", stringValue: ""))
        target.addChild(NSXMLElement(name: "target_title_sp", stringValue: ""))
        target.addChild(NSXMLElement(name: "target_hint_en", stringValue: ""))
        target.addChild(NSXMLElement(name: "target_hint_sp", stringValue: ""))
        target.addChild(NSXMLElement(name: "target_description_en", stringValue: ""))
        target.addChild(NSXMLElement(name: "target_descriptionsp", stringValue: ""))
        target.addChild(NSXMLElement(name: "x", stringValue: ""))
        target.addChild(NSXMLElement(name: "y", stringValue: ""))
        target.addChild(NSXMLElement(name: "target_icon", stringValue: ""))
        target.addChild(NSXMLElement(name: "target_somethin", stringValue: ""))

  }

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您没有在循环中创建新目标。显然,如果要为探测添加多个目标,则需要为每次迭代创建一个新目标。

// set up expedition
for _ in 1...3 {
    var target = NSXMLElement(name: "target")
    // configure target
    expedition.addChild(target)
}