Arrays 将字符串赋给数组将返回Nil-Swift
在swift中对我的论坛进行网页抓取时,我可以运行以下代码在控制台中打印每个论坛主题的标题:Arrays 将字符串赋给数组将返回Nil-Swift,arrays,swift,Arrays,Swift,在swift中对我的论坛进行网页抓取时,我可以运行以下代码在控制台中打印每个论坛主题的标题: enum HTMLError: Error { case badInnerHTML } class DiscussionBoardResponse { init(_ innerHTML: Any?) throws { guard let htmlString = innerHTML as? String else { throw HTMLError.badInnerHTML }
enum HTMLError: Error {
case badInnerHTML
}
class DiscussionBoardResponse {
init(_ innerHTML: Any?) throws {
guard let htmlString = innerHTML as? String else { throw HTMLError.badInnerHTML }
let doc = try SwiftSoup.parse(htmlString)
let titles = try doc.getElementsByClass("Forum_NormalBold").array()
var nestedLoginController: LoginController!
for i in 0..<titles.count {
let title = try titles[i].text()
print(title)
print("")
}
}
}
我的viewController名为LoginController。现在我尝试将其添加到DiscussionBoardResponse中,以便为变量分配标题:
class DiscussionBoardResponse {
//let discussionTopics: [DiscussionTopicSingle]
init(_ innerHTML: Any?) throws {
guard let htmlString = innerHTML as? String else { throw HTMLError.badInnerHTML }
let doc = try SwiftSoup.parse(htmlString)
let titles = try doc.getElementsByClass("Forum_NormalBold").array()
var nestedLoginController: LoginController!
for i in 0..<titles.count {
let title = try titles[i].text()
//tried converting title into a string in case it was't
//guard let titleString = title as? String else { return }
nestedLoginController?.discussionTitles[i] = title
print(nestedLoginController?.discussionTitles[i])
print("")
}
}
}
我试图发送变量discussionTitles
let discussionResponse = try DiscussionBoardResponse(innerLoginHTML, test: self.discussionTitles)
在讨论回复中,我现在:
init(_ innerHTML: Any?, test: [String] = []) throws {
guard let htmlString = innerHTML as? String else { throw HTMLError.badInnerHTML }
let doc = try SwiftSoup.parse(htmlString)
let titles = try doc.getElementsByClass("Forum_NormalBold").array()
//var nestedLoginDelete: [String] = []
for i in 0..<titles.count {
let title = try titles[i].text()
test.append(title)
}
}
}
init(uinnerHTML:Any?,test:[String]=[])抛出{
guard let htmlString=innerHTML as?字符串else{throw HTMLError.badInnerHTML}
let doc=尝试SwiftSoup.parse(htmlString)
让titles=try doc.getElementsByClass(“Forum_NormalBold”).array()
//变量nestedLoginDelete:[字符串]=[]
对于0中的i..nestedLoginController
已声明但没有值。和discussionTitles[i]如果数组为空,则
将可靠崩溃。使用将变量声明为强制展开是一种奇怪的逻辑!
并使用?
@vadian向nestedLoginController声明的方式或内容,因为它仅用于使用nestedLoginController描述类。variableInsideOfClass?您必须分配t将realLoginController
实例添加到变量nestedLoginController
以访问其属性。@PhillipMills“用将变量声明为强制展开,并用测试它是否为零,这是一种奇怪的逻辑!”不,它不是。这是一种标准的方法,可以将延迟初始化和不必到处展开的便利性结合起来。nestedLoginController
已声明,但没有任何价值。和discussionTitles[i]如果数组为空,则
将可靠崩溃。使用将变量声明为强制展开是一种奇怪的逻辑!
并使用?
@vadian向nestedLoginController声明的方式或内容,因为它仅用于使用nestedLoginController描述类。variableInsideOfClass?您必须分配t将realLoginController
实例添加到变量nestedLoginController
以访问其属性。@PhillipMills“用将变量声明为强制展开,并用测试它是否为零,这是一种奇怪的逻辑!”不,不是。这是一种标准的方法,可以将延迟初始化和不必到处展开的便利性结合起来。
let discussionResponse = try DiscussionBoardResponse(innerLoginHTML, test: self.discussionTitles)
init(_ innerHTML: Any?, test: [String] = []) throws {
guard let htmlString = innerHTML as? String else { throw HTMLError.badInnerHTML }
let doc = try SwiftSoup.parse(htmlString)
let titles = try doc.getElementsByClass("Forum_NormalBold").array()
//var nestedLoginDelete: [String] = []
for i in 0..<titles.count {
let title = try titles[i].text()
test.append(title)
}
}
}