初めに
今回はdictionary型の変数をソートする方法を展開します
dictionaryについて
此奴はハッシュテーブルな為、素早くキー検索ができるといういい点がありますが、格納順序は保証してくれるものではありません。
いいたいことは以下のことを指しています。
何もしないで抽出
test.swift
let testDict:[String:String] = ["01":"msTest","02":"mrTest","03":"Test"]
for (key, val) in testDict {
println("key:\(key)\n value:\(val)")
}
出力結果
key:02
value:mrTest
key:01
value:msTest
key:03
value:Test
こんな風にぐちゃぐちゃに辞書に格納されてしまいます。
今回の議題の解決策
順番を保証してくれるデータ型などはありますが、抽出の方法が違かったりと多々問題が出てくるので、dictionaryを手っ取り早くソートして順番通り表示します
test.swift
let testDict:[String:String] = ["01":"msTest","02":"mrTest","03":"Test"]
//昇順でソート
let sortData = testDict.sorted { $0.0 < $1.0 } .map { $0 }
for (key, val) in sortData {
println("key:\(key)\n value:\(val)")
}
出力結果
key:01
value:msTest
key:02
value:mrTest
key:03
value:Test
終わり
このように一文追加することでソートされます。
昇順で今回は例に出しましたが、もちろん降順でもソート可能です!
言語が保証してくれない物を無理やりソートするより、保証している物を使った方が楽ですが、dictionaryは扱いやすいし早いしなかなか捨てがたい物ではありますよね!
この記事がどなたかの助けになることを願っております。