gpt4 book ai didi

swift - 在解析 json swift 解包可选值时意外发现 nil

转载 作者:行者123 更新时间:2023-11-30 10:33:04 25 4
gpt4 key购买 nike

我尝试使用以下方法快速解析 json:

   let apiPath = "http://samples.openweathermap.org/data/2.5/forecast?q=München,DE&appid=b1b15e88fa797225412429c1c50c122a1"

func getDataWithCompletionHandler(completionHandler: (_ jsonData: JSON?) -> Void) {


let request : URLRequest = URLRequest(url: URL(string: apiPath)!)

Alamofire.request(apiPath, method: .get)
.responseJSON { (response) in

当我的应用程序运行时,我在线出现错误:

let request : URLRequest = URLRequest(url: URL(string: apiPath)!)

fatal error: unexpectedly found nil while unwrapping an Optional value.

但我确实传递了正确的字符串。为什么会出现这个错误?

最佳答案

您的 URL 字符串包含特殊字符,因此您需要做的是对 URL 字符串进行编码,然后再从中创建 URL 对象。有两种方法对 URL 字符串进行编码。

  1. 使用addingPercentEncoding(withAllowedCharacters:)

    let apiPath = "http://samples.openweathermap.org/data/2.5/forecast?q=München,DE&appid=b1b15e88fa797225412429c1c50c122a1"
    if let encodeString = apiPath.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed),
    let url = URL(string: encodeString) {
    print(url)
    }
  2. 使用URLComponents

    var urlComponent = URLComponents(string: "http://samples.openweathermap.org/data/2.5/forecast")!
    let queryItems = [URLQueryItem(name: "q", value: "München,DE"), URLQueryItem(name: "appid", value: "b1b15e88fa797225412429c1c50c122a1")]
    urlComponent.queryItems = queryItems
    print(urlComponent.url!)

关于swift - 在解析 json swift 解包可选值时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58685419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com