在 Swift3 的 iOS 中向 GET url 添加查询参数

Adding query parameter to the GET url in iOS in Swift3

我有一个 URL 和

https://api.asiancar.com/api/applicationsettings

它基本上是一个 GET url 所以我需要传递一个 boolean "isMobile" 和 timestamp 作为查询参数。如何实现这个作为最终的 URL 通过查询后会是这样的:

https://api.asiancar.com/api/applicationsettings?timestamp=111122244556789879&isMobile=true

let queryItems = [
    NSURLQueryItem(timestamp: "1234568878788998989", isMobile: true),
    NSURLQueryItem(timestamp: "1234568878788998989", isMobile: true)
]
let urlComps = NSURLComponents(string: "www.api.asiancar.com/api/applicationsettings")!
urlComps.queryItems = queryItems
let URL = urlComps.URL!

我做的对还是有其他修改?请告诉。

除非你继承了 NSURLQueryItem,否则你的 init 方法是不正确的。根据 Apple's documentation for NSURLQueryItem,init 方法签名是:

init(name: String, value: String?)

这意味着您的查询项应该像这样创建:

let queryItems = [NSURLQueryItem(name: "timestamp" value: "1234568878788998989"), NSURLQueryItem(name: "isMobile", value: "true")]

这将以您期望的格式将它们正确添加到 url。

试试这个:

let API_PREFIX = "www.api.asiancar.com/api/applicationsettings"

 var url : URL? = URL.init(string: API_PREFIX + queryItems(dictionary: [name: "isMobile", value: "true"] as [String : Any]))

func queryItems(dictionary: [String:Any]) -> String {
        var components = URLComponents()
        print(components.url!)
        components.queryItems = dictionary.map {
            URLQueryItem(name: [=10=], value:   as String)
        }
       return (components.url?.absoluteString)!
    }

您可以尝试使用 String

的替代方法
let baseUrlString = "https://api.asiancar.com/api/"
let timeStamp = 1234568878788998989
let isMobile = true
let settingsUrlString = "\(baseUrlString)applicationsettings?timestamp=\(timeStamp)&isMobile=\(isMobile)"
print(settingsUrlString)
let url = URL(string: settingsUrlString)

输出:https://api.asiancar.com/api/applicationsettings?timestamp=1234568878788998989&isMobile=true