Arrays 将字符串赋给数组将返回Nil-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 }

在swift中对我的论坛进行网页抓取时,我可以运行以下代码在控制台中打印每个论坛主题的标题:

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将real
LoginController
实例添加到变量
nestedLoginController
以访问其属性。@PhillipMills“用
将变量声明为强制展开,并用
测试它是否为零,这是一种奇怪的逻辑!”不,它不是。这是一种标准的方法,可以将延迟初始化和不必到处展开的便利性结合起来。
nestedLoginController
已声明,但没有任何价值。和
discussionTitles[i]如果数组为空,则
将可靠崩溃。使用
将变量声明为强制展开是一种奇怪的逻辑!
并使用
@vadian向nestedLoginController声明的方式或内容,因为它仅用于使用nestedLoginController描述类。variableInsideOfClass?您必须分配t将real
LoginController
实例添加到变量
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) 
        }
    }
}