根据您的参数要求,我不知道这是否是您要寻找的,但是...
如果您想附加和检查 URL 参数,您可以使用 NSURLComponents
在你的情况下,你可以摆脱这样的事情:
var dictionary: [AnyHashable: Any] = [
"a": 1,
"b": "title",
"c": ["a", "b"],
"d": ["a": 1, "b": ["a", "b"]]
]
let url = URL(string: "http://example.com")!
var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false)
let queryItems = dictionary.map{
return URLQueryItem(name: "\($0)", value: "\($1)")
}
urlComponents?.queryItems = queryItems
print(urlComponents?.url) //gives me Optional(http://example.com?b=title&a=1&d=%5B%22b%22:%20%5B%22a%22,%20%22b%22%5D,%20%22a%22:%201%5D&c=%5B%22a%22,%20%22b%22%5D)
有趣的部分是URLComponents 本身,它将您提供给它的 URL “分解”成您可以检查的部分。
然后,要添加 URL 查询参数,您可以使用 URLQueryItem 类并将这些 URLQueryItem 项目的数组提供给您的 URLComponents 实例。在这个快速示例中,我只是将您的字典中的map 转换为URLQueryItems 的数组,但您可能会想到一些更可靠的东西:)
URLComponents 当然也可以反过来使用...我的意思是,如果你有一个带参数的 URL,你可以创建一个 URLComponents 的实例,然后查询 queryItems。
希望对你有所帮助。