簡體   English   中英

無法在Swift中解開Optional

[英]Can't unwrap Optional in Swift

運行時錯誤Can't unwrap Optional.None在此行中let tfHppleElement = element.firstChild as TFHppleElement

func fetchDataToParse() {

    let urlToParse = NSURL.URLWithString("http://www.test.com/gotests")
    var err: NSError?
    let htmlData = NSData.dataWithContentsOfURL(urlToParse, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)
        if (err) {
        NSLog("Error NSData.dataWithContentsOfURL, description: \(err.description)")
        return
        }
    let dataParser = TFHpple(HTMLData: htmlData)
    let xpathQueryString = "//div[@class='content-wrapper']/ul/li/a"
    let elements: Array = dataParser.searchWithXPathQuery(xpathQueryString)
        if elements.count == 0 {
        NSLog("No elemnts.count==0 in array  while searchWithXPathQuery ")
        return
        }

    var hrefValue:String?
    var titleValue:String?

        for element : AnyObject in elements{

            let tfHppleElement = element.firstChild as TFHppleElement
            titleValue = tfHppleElement.content

            if (titleValue){
                NSLog("\(titleValue)")
            }

            hrefValue = element.objectForKey("href")
            if (hrefValue){
             NSLog("\(hrefValue)")
             }



        }


}

element.firstChild可能為nil,因此應在if語句中將其拆開

if let tfHppleElement = element.firstChild? as? TFHppleElement
{
        titleValue = tfHppleElement.content

        if (titleValue){
            NSLog("\(titleValue)")
        }

        hrefValue = element.objectForKey("href")
        if (hrefValue){
         NSLog("\(hrefValue)")
         }
}

這樣,代碼將僅訪問tfHppleElement(如果確實存在)並且可以將其強制轉換為TFHppleElement

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM