2016-10-28 3 views
0

Я пытаюсь разобрать XML и отображать данные в виде таблицы. Если в XML есть 4 тега ListSections, в представлении таблицы будет 4 раздела, и каждый раздел будет отображать строку в соответствии с данными. Каждый тег ListSection имеет количество тегов Team. Я хочу показать эти команды в строке в соответствии с разделами.Swift - созданный синтаксический анализ вложенной xml-проблемы

Это моя структура XML.

<List> 
    <ListSection sectionName="section 1"> 
     <Team id="10" name="Team1"> 
      <OppositeTeam oppName="TeamX" day="Monday"/> 
     </Team> 
     <Team id="20" name="Team2"> 
      <OppositeTeam oppName="TeamY" day="Tuesday"/> 
     </Team> 
    </ListSection> 
    <ListSection sectionName="section 2"> 
     <Team id="100" name="Team100"> 
      <OppositeTeam oppName="TeamA" day="Monday"/> 
     </Team> 
     <Team id="200" name="Team200"> 
      <OppositeTeam oppName="TeamB" day="Monday"/> 
     </Team> 
    </ListSection> 
</List> 

Я пытаюсь создать класс модели для этого xml. Я создал 2 класса до сих пор.

class ListSection { 
    var sectionName: String = String() 
    var team : [Team] = [] 
} 

class Team { 
    var teamId:String = String() 
    var teamName:String = String() 
} 

Я не уверен в этой модели данных, которую я создал. Может ли кто-нибудь предложить мне, если я пойду в правильном или неправильном направлении?

Заранее спасибо.

Обновлено: Это мой синтаксический код Swift. Я не могу сохранить данные в соответствующем объекте.

var listSection: [ListSection] = [] 
var teamArray : [Team] = [] 
var teamData = NSMutableArray() 

var sectionName = String() 
var teamName = String() 

var listSectionObj = ListSection() 

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { 

    if elementName == "ListSection" { 
     listSectionObj = ListSection() 
     listSectionObj.sectionName = "" 
     listSectionObj.team = [] 
     if let sectionName = attributeDict["sectionName"] as String? { 
      self. sectionName = sectionName 
     } 
    }else if elementName == "Team" { 
     if let teamName = attributeDict["TeamName"] as String? { 
      self.teamName = teamName 
     } 
    } 
} 


func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 
    if elementName == "ListSection" { 

     listSectionObj.sectionName = sectionName 
     listSection.append(listSectionObj) 
    }else if elementName == "Team" { 
     teamObj = Team() 
     teamObj.teamName = teamName 
     teamArray.append(teamObj) 
     print("teamArray = \(teamArray)") 
    } 
} 

ответ

0

Я не уверен, что вы имеете в виду вы не можете сохранить данные в объекте, но если вы хотите сохранить пользовательские объекты, я настоятельно рекомендую посмотреть на это: http://nshipster.com/nscoding/

Кроме того, ваша структура данных кажется хорошей в соответствии с структурой XML.