从Kanna 2.2.1升级到4.0.2并得到相同的错误

时间:2018-11-01 15:27:31

标签: swift kanna

我正在重写一个在Github上找到的项目,以学习和自学如何使用swift和pod文件。我将Kanna从2.2.1升级到4.0.2,因为遇到了arm64错误。

使用4.0.2时出现错误:

  

用于条件绑定的初始化程序必须具有可选类型,而不是“ HTMLDocument”

     

呼叫可以抛出,但未标记为“ try”且错误未得到处理

我不确定此错误的含义以及解决方法。与此if语句关联:

if let doc = Kanna.HTML(html: htmlText, encoding: String.Encoding.utf8) {
    for itemSize in doc.css("option[value^='']") {
        let itemSizeText = itemSize.text!.lowercased()

        let wishListItemSize = self.websiteInstance!.websiteWishListItem.size!.lowercased()

        if itemSizeText.range(of: wishListItemSize) != nil {
            print("Found size")

            foundItemSize = true

            let itemSizeValue = itemSize["value"]

            self.websiteInstance!.viewController!.websiteBrowser!.evaluateJavaScript("document.getElementById(\"size-options\").value = \(itemSizeValue!)", completionHandler: nil)

            break
        }

        countSize += 1
    }                    
}

1 个答案:

答案 0 :(得分:1)

您要调用的方法的类型签名为public func HTML(html: String, url: String? = nil, encoding: String.Encoding, option: ParseOption = kDefaultHtmlParseOption) throws -> HTMLDocument。该函数返回一个非可选的值,但是会引发错误。

如果发生错误,可以使用try?关键字使函数返回nil来处理错误,并使当前使用的可选绑定的工作方式如下:

if let doc = try? Kanna.HTML(html: htmlText, encoding: String.Encoding.utf8) {...

或者更确切地说,使用try并将函数调用放在do-catch块中,以查看在抛出任何错误的情况下的实际错误。

do {
    let doc = Kanna.HTML(html: htmlText, encoding: String.Encoding.utf8)
    for itemSize in doc.css("option[value^='']") {
        let itemSizeText = itemSize.text!.lowercased()

        let wishListItemSize = self.websiteInstance!.websiteWishListItem.size!.lowercased()

        if itemSizeText.range(of: wishListItemSize) != nil {
            print("Found size")
            foundItemSize = true
            let itemSizeValue = itemSize["value"]    
            self.websiteInstance!.viewController!.websiteBrowser!.evaluateJavaScript("document.getElementById(\"size-options\").value = \(itemSizeValue!)", completionHandler: nil)
            break
        }

        countSize += 1
    }        
} catch {
    print(error)
    // Handle error
}