Swift 对查询字符串非常困惑

Swift 对查询字符串非常困惑,swift,swift2,swift3,alamofire,nsurl,Swift,Swift2,Swift3,Alamofire,Nsurl,我正在使用AlamoFire发出API请求。连接到API是非常简单的,具有巨大挑战性的是查询API 我正在尝试创建类似以下内容的查询字符串: https://api-fxtrade.oanda.com/v3/instruments/USD_CAD/candles?price=BA&from=2016-10-17T15%3A00%3A00.000000000 z&粒度=M1 我觉得我已经在互联网上浏览了很多关于这个主题的文档,但结果很差 是否有人可以分享有关查询字符串的任何资源或建议?创建查询字符

我正在使用
AlamoFire
发出API请求。连接到API是非常简单的,具有巨大挑战性的是查询API

我正在尝试创建类似以下内容的查询字符串:

https://api-fxtrade.oanda.com/v3/instruments/USD_CAD/candles?price=BA&from=2016-10-17T15%3A00%3A00.000000000 z&粒度=M1

我觉得我已经在互联网上浏览了很多关于这个主题的文档,但结果很差


是否有人可以分享有关查询字符串的任何资源或建议?

创建查询字符串的最简单方法是使用
URLComponents
,它可以为您处理所有百分比转义:

// Keep the init simple, something that you can be sure won't fail
var components = URLComponents(string: "https://api-fxtrade.oanda.com")!

// Now add the other items to your URL query
components.path = "/v3/instruments/USD_CAD/candles"
components.queryItems = [
    URLQueryItem(name: "price", value: "BA"),
    URLQueryItem(name: "from", value: "2016-10-17T15:00:00.000000000Z"),
    URLQueryItem(name: "granularity", value: "M1")
]

if let url = components.url {
    print(url)
} else {
    print("can't make URL")
}
这就是纯斯威夫特,你应该熟悉它。掌握了基本知识后,Alamofire可以为您简化:

let params = [
    "price": "BA",
    "from": "2016-10-17T15:00:00.000000000Z",
    "granularity": "M1"
]
Alamofire.request("https://api-fxtrade.oanda.com/v3/instruments/USD_CAD/candles", parameters: params)
    .responseData { response in
        // Handle response
    }

您的问题是如何在Swift中为AlamoFire请求生成查询字符串,还是如何提取查询字符串的组件?还是别的?我的问题是如何生成查询字符串非常感谢您的帮助!