将数据从结构体初始化传递到另一个视图控制器
问题描述:
我在将数据从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 - school
的for in loop
内。 我该怎么办?我使用Xcode与Swift3和SwiftSoup进行分析。
答
小心使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()
}
}
这个功能应该是在您的视图控制器
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)
}
}
显示,你叫'GeneralitiesResponse'代码 – kileros