2017-08-30 98 views
0

说,我有以下网址。如何在字典排序键值,并返回一个字符串

我的键值存储在一个字典

let strURL = "https://www.x.com/?d=1&a=2&b=3&c=4&nbr=1234567890" 
let items = URLComponents(string:strURL)?.queryItems 
var KeyValues:[String:String] = [:] 

items?forEach { 
    item in KeyValues[item.name] = item.value 
} 

问题:如何排序并输出从键值来使得

string = "a=1&b=2&c=3&d=4&nbr=1234567890" 

感谢串

+0

考虑一个查询字符串的行为像一个特定顺序无关紧要的字典。 – vadian

回答

0

这是我如何做它:

let sorted = KeyValues.map { $0 }.sorted { $0.key < $1.key } 
let result = sorted.dropFirst().reduce("\(sorted.first!.key)=\(sorted.first!.value)") { (result, kvp) -> String in 
    result + "&\(kvp.key)=\(kvp.value)" 
} 

我们首先把字典成[(String, String)]然后我们根据按键排序。

然后,我们reduce排序的数组加入键和值在一起。

+0

编译错误:使用未解析的标识符“密钥”。我需要做什么? – MilkBottle

+0

@MilkBottle它为我工作,虽然...尝试编辑的答案, – Sweeper

相关问题