我将数据从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进行解析。
答案 0 :(得分:0)
小心谨慎for I in 0..<names.count
并使用I
,names[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)
}
}