Swift3,无法使用查询参数定义URL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift3,无法使用查询参数定义URL相关的知识,希望对你有一定的参考价值。

理想情况下,我期待我的absoluteURL打印

http://my-MacBook-Pro.local:8080/apis/v2/Driver/driverDetails?domain=123&driver=12&mykey=8908098

来自this博客

但由于某种原因,我无法正确定义完整的网址。

var urlComponents = URLComponents(string : fullURL)!
for key in getData.allKeys {
   let valueOfKey : String = getData.value(forKey: key as! String) as! String
   print(key as! String + ":" + valueOfKey)
   urlComponents.queryItems?.append(URLQueryItem(name: key as! String, value : valueOfKey))
   //getData.value(forKey: key as! String) as! String?))
}

print("fullurl ->"+urlComponents.url!.debugDescription)

电流输出

域名:123驱动程序:12 mykey:8908098

Fullurl-> Cakesuppois

答案

http://my-MacBook-Pro.local:8080/apis/v2/Driver/driverDetails最初将是urlComponents.queryItems,所以nil将不会做任何事情。在下一次迭代中它仍然是urlComponents.queryItems?.append,所以再次附加不会发生等等。

您需要构建自己的nil数组,并在完成后分配它:

URLQueryItem

以上是关于Swift3,无法使用查询参数定义URL的主要内容,如果未能解决你的问题,请参考以下文章

URL 片段中的多个参数

SecurityError:replaceState 无法将历史记录更新为在路径、查询或片段以外的组件中不同的 URL

Visual Studio 自定义代码片段在方法定义的参数列表中不起作用

无法为没有参数的“URL”类型调用初始化程序 - Swift 3

URL编码参数中的布尔值在Swift3中使用Alamofire编码为0和1

VSCode自定义代码片段3——url大全