Swift URL query string builder and parser
Swift
import Foundation
func buildURL(_ base: String, query: [String: String]) -> URL? {
guard var components = URLComponents(string: base) else { return nil }
components.queryItems = query.map { URLQueryItem(name: $0.key, value: $0.value) }
return components.url
}
func parseQuery(_ url: URL) -> [String: String] {
guard let items = URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems else {
return [:]
}
return items.reduce(into: [String: String]()) { result, item in
result[item.name] = item.value ?? ""
}
}