2017-08-19 23 views
1

我在將數據從struct init(位於.Swift文件中)傳遞到另一個ViewController時遇到麻煩。下面的代碼:將數據從結構體初始化傳遞到另一個視圖控制器

import Foundation 

import SwiftSoup 

enum HTMLError: Error { 
    case badInnerHTML 
} 

struct GeneralitiesResponse { 

    init(_ innerHTML: Any?) throws { 
     guard let htmlString = innerHTML as? String else { throw 
      HTMLError.badInnerHTML} 
     let doc = try SwiftSoup.parse(htmlString) 
     let names = try doc.getElementsByClass("name").array() 
     let codes = try doc.getElementsByClass("usrname font_size_11 open_sans_condensed_bold").array() 
     let schools = try doc.getElementsByClass("scuola").array() 



     for i in 0..<names.count { 
      let name = try names[i].text() 
      let code = try codes[i].text() 
      let school = try schools[i].text() 

      print(name) 
      print(code) 
      print(school) 
      print("")         
     }       
    }         
} 

我需要通過什麼是name - code - schoolfor in loop內。 我該怎麼辦?我使用Xcode與Swift3和SwiftSoup進行分析。

+0

顯示,你叫'GeneralitiesResponse'代碼 – kileros

回答

0

小心使for I in 0..<names.countnames[I]codes[I]schools[I]使用I,如果數組數是不同的你會崩潰。

這是你要做什麼。

import Foundation 

import SwiftSoup 

enum HTMLError: Error { 
    case badInnerHTML 
} 

struct GeneralitiesResponse { 
    let names: Array<Element> 
    let codes: Array<Element> 
    let schools: Array<Element> 

    init(_ innerHTML: Any?) throws { 
     guard let htmlString = innerHTML as? String else { throw 
      HTMLError.badInnerHTML} 
     let doc = try SwiftSoup.parse(htmlString) 
     names = try doc.getElementsByClass("name").array() 
     codes = try doc.getElementsByClass("usrname font_size_11 open_sans_condensed_bold").array() 
     schools = try doc.getElementsByClass("scuola").array() 
    } 
} 

這個功能應該是在您的視圖控制器

func parse()throws { 
     let gen = try GeneralitiesResponse("html") 

     for i in 0..<gen.names.count { 
      let name = try gen.names[i].text() 
      print(name) 
     } 

     for i in 0..<gen.codes.count { 
      let code = try gen.codes[i].text() 
      print(code) 
     } 

     for i in 0..<gen.schools.count { 
      let school = try gen.schools[i].text() 
      print(school) 
     } 
    } 
相關問題