在拆开一个可选值时意外发现nil" 错误[重复]。


在拆解一个可选值时意外地发现nil” 错误。

在线

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

我想把里面的所有元素都放在 “我 “和 “我 “之间。形象的div 使用SwiftSoup,同时传递不同的url链接.如果有。没有类图像的div 然后我想打印 “错误”

我有可选的绑定与if let…但它也得到错误。

如何安全地检查Optional值?

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()
    }

}

解决方案:

把你的代码替换成这样。

let session = URLSession.shared guard 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 {
                    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()

  }

给TA打赏
共{{data.count}}人
人已打赏
未分类

当我做一个通过的响应时,不显示警报

2022-9-8 18:12:06

未分类

将C Sharp中的IEnumerable<T> 序列化为Avro格式的最佳方法。

2022-9-8 18:12:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索