将数据从struct初始化传递到另一个View Controller

时间:2017-08-19 09:39:53

标签: ios struct swift3 initialization segue

我将数据从struct init文件传递到另一个ViewController时遇到了麻烦。这是代码:

.Swift

我需要传递的是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 - school。 我能怎么做?我使用Xcode和Swift3以及SwiftSoup进行解析。

1 个答案:

答案 0 :(得分:0)

小心谨慎for I in 0..<names.count并使用Inames[I]codes[I]中的schools[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)
        }
    }