无法将Kanna.libxmlHTMLNode类型的值转换为' NSString

时间:2018-02-19 17:52:23

标签: swift

我正在尝试从网站上抓取一些数据,因为没有API,我正在尝试使用ALAMOFIRE + KANNA

我可以在控制台中打印我的结果,但是当我尝试在String中转换以在我的应用程序中使用它时,它会说:

无法转换类型的值&Kanana.libxmlHTMLNode' (0x10887d210)到' NSString' (0x108efc0d0)。

为什么我不能使用as将数据转换为String!串

我的代码

var competitions:[String] = []


    // Grabs the HTML 
func scrapeData() -> Void {
    Alamofire.request("MYWEBSITE.com").responseString { response in
        print("\(response.result.isSuccess)")
        if let html = response.result.value {
            self.parseHTML(html: html)
        }
    }
}

func parseHTML(html: String) -> Void {
    if let doc =  try? Kanna.HTML(html: html, encoding: String.Encoding.utf8) {

        do {
            // Search for nodes by XPATH selector
            for competition in doc.xpath("""
 //*[@id="page_teams_1_block_teams_index_club_teams_2"]/ul
 """) {
                let competitionName = competition.at_xpath("li/div/a")
                print(competitionName?.content ?? "N/A")

                competitions.append(competition as! String)

1 个答案:

答案 0 :(得分:1)

competitionlibxmlHTMLNode,而不是String。您不能简单地将一种类型的对象强制转换为另一种不相关的类型。

您很可能希望将competitionName而不是competition附加到字符串数组中。但您需要使用其String属性将其转换为text

competitions.append(competitionName?.text ?? "N/A")