2017-08-19 4 views
1

.Swiftファイルのstruct initのデータを別のViewControllerに渡す際に問題があります。私が合格に必要なもの構造体の初期化から別のView Controllerにデータを渡す

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("")         
     }       
    }         
} 

for in loop内部name - code - school次のとおりです。ここでは、コードです。 どうすればいいですか?私はXcodeをSwift3とSwiftSoupで解析しています。

+0

にする必要があります – kileros

答えて

0

for I in 0..<names.countを作り、配列数があなたの意志のクラッシュ異なる場合、names[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() 
    } 
} 

この機能を使用すると、 `GeneralitiesResponse`を呼び出すコードを表示するビューコントローラ

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) 
     } 
    } 
関連する問題