我有一个字典作为[String:Any].现在我想将这个字典键和值转换为key=value&key=value.我创建了下面的扩展名来工作,但它对我不起作用.
extension Dictionary {
var queryString: String? {
var output: String = ""
for (key,value) in self {
output += "\(key)=\(value)\(&)"
}
return output
}
}
Run Code Online (Sandbox Code Playgroud)
Lal*_*hna 23
NSURLQueryItem对象表示URL的查询部分中的项的单个名称/值对.您将查询项与NSURLComponents对象的queryItems属性一起使用.
要创建一个使用指定的初始化程序queryItemWithName:value:,然后将它们添加NSURLComponents到生成NSURL.例如:
Objective-C的:
NSDictionary *queryDictionary = @{ @"q": @"ios", @"count": @"10" };
NSMutableArray *queryItems = [NSMutableArray array];
for (NSString *key in queryDictionary) {
[queryItems addObject:[NSURLQueryItem queryItemWithName:key value:queryDictionary[key]]];
}
components.queryItems = queryItems;
NSURL *url = components.URL; // http://stackoverflow.com?q=ios&count=10
Run Code Online (Sandbox Code Playgroud)
迅速:
let queryDictionary = [ "q": "ios", "count": "10" ]
var components = URLComponents()
components.queryItems = queryDictionary.map {
URLQueryItem(name: $0, value: $1)
}
let URL = components.url
Run Code Online (Sandbox Code Playgroud)
kyl*_*ner 19
另一种Swift-esque方法:
let params = [
"id": 2,
"name": "Test"
]
let urlParams = params.flatMap({ (key, value) -> String in
return "\(key)=\(value)"
}).joined(separator: "&")
Run Code Online (Sandbox Code Playgroud)
var populatedDictionary = ["key1": "value1", "key2": "value2"]
extension Dictionary {
var queryString: String {
var output: String = ""
for (key,value) in self {
output += "\(key)=\(value)&"
}
output = String(output.characters.dropLast())
return output
}
}
print(populatedDictionary.queryString)
// Output : key1=value1&key2=value2
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。快乐编码!!
extension Dictionary {
var queryString: String? {
return self.reduce("") { "\($0!)\($1.0)=\($1.1)&" }
}
}
Run Code Online (Sandbox Code Playgroud)