将数据从结构体初始化传递到另一个视图控制器

问题描述:

我在将数据从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

小心使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) 
     } 
    }