【问题标题】:Unexpectedly found nil while unwrapping an Optional value» Error [duplicate]在展开可选值时意外发现 nil»错误 [重复]
【发布时间】:2020-08-07 16:23:48
【问题描述】:

在展开可选值时意外发现 nil» 错误

上线

let test: Element? = try doc!.select("div.image").first()!

我想在传递不同的 url 链接时使用 SwiftSoup 获取 div 与类图像 之间的所有元素。如果没有 没有类图像的 div 那么我想要打印“错误”

我有 if let ... 的可选绑定,但它也会出错..

如何安全地检查可选值?

import UIKit
import WebKit
import SwiftSoup

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()


        let session = URLSession.shared
        let url = URL(string: "http://www.example.com.html")!

        let task = session.dataTask(with: url ) { (data, response, error) in
            // Check whether data is not nil
            guard let loadedData = data
                else {
                    return
            }
            // Load HTML code as string
            let contents = String(data: loadedData, encoding: .utf8)
            do {
                            let html: String? = contents
                            let doc: Document? = try SwiftSoup.parse(html!)
                let test: Element? = try doc!.select("div.image").first()!

                if let test1 = test{
                    print(test1)

                }else {
                    print("error")
                }
                        } catch Exception.Error(let type, let message) {
                print(message)
            } catch {
                print("error")
            }


        }
        task.resume()
    }

}

【问题讨论】:

标签: ios swift swift5.1


【解决方案1】:

用这个替换你的代码:

让会话 = URLSession.shared 守卫让 url = URL(string: "http://www.example.com.html") else {return}

let task = session.dataTask(with: url ) { (data, response, error) in
    // Check whether data is not nil
    guard let loadedData = data
        else {
            return
    }
    // Load HTML code as string
    let contents = String(data: loadedData, encoding: .utf8)
    do {
                    guard let html: String = contents else {return}
                    let doc: Document = try SwiftSoup.parse(html) 
        let test: Element = try doc.select("div.image").first()

        if let test1 = test{
            print(test1)
        }else {
            print("error")
        }
                } catch Exception.Error(let type, let message) {
        print(message)
    } catch {
        print("error")
    }


}
task.resume()

  }

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 2014-12-27
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多