[英]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.