2015-01-24 2 views
0

Использование Swift/cocoa Я создаю форму ввода пользователя, которая выведет XML-файл. (Начальный уровень для всех вышеперечисленных.)Swift NSXML необходимо создать цикл для создания множества дочерних элементов

Пользователь будет добавлять несколько целей, но я получаю сообщение об ошибке при попытке создать несколько «целей».

Поток: Пользователь вводит количество целей, которые они хотят создать (7,8 или 9). У каждой цели есть информация, которую вводит пользователь, поэтому количество целей «х». Я использую цикл 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

Вы не создаете новую цель в цикле. Очевидно, вам нужно создать новую цель для каждой итерации, если вы хотите добавить более одной цели в экспедицию.

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

Спасибо - код работает так, как он мне тоже нужен. – Cat

+1

Итак, почему вы не приняли ответ? – Mundi

Смежные вопросы