2017-08-30 55 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

相關問題