繁体   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