2017-08-30 20 views
0

私は次のURLを持っています。辞書のKeyValueをソートして文字列を返す方法

は私が辞書に

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 
} 

問題はkeyValuesを保存:KeyValuesはから文字列よう

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

コンパイラエラー:未解決の識別子 'key'の使用。私は何をする必要がありますか? – MilkBottle

+0

@MilkBottleそれは私のために働いた...編集された答えを試してみてください、 – Sweeper

関連する問題