我在将数据从.Swift文件中的struct init传递到另一个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("")
}
}
}我需要传递的是for in loop中的name - code - school。我该怎么做呢?我使用带有Swift3和SwiftSoup的Xcode进行解析。
发布于 2017-10-04 05:21:24
注意在names[I]、codes[I]和schools[I]中使用for I in 0..<names.count和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)
}
}https://stackoverflow.com/questions/45770002
复制相似问题