解放区在住氷翠 緑の閃光
【解放区在住氷翠】氷翠のお気楽日記

連想配列変数っぽいもの

2018-03-06

どうも、氷翠です。

PHPでは「連想配列変数」とかっていいますが、特別宣言とかは必要なく、いきなり利用することができます。
しかし、Objective-CとかSwiftでは「辞書」と呼ばれます。
型としては「Dictionary型」と呼ばれます。

今回、氷翠は大量のデータを一度に扱うアプリケーションを作成しているので、わかりやすく扱うためにこの「Dictionary型」を使うことにしたわけです。

しかし、思ってる以上に面倒なこと!

で、完成形はこちら。

ウインドウの中に「NSTextView」を設置して結果を表示しているだけです。
しかし、今回の目的はあくまでの「Dictionary型の変数をソートする」ことにあります。
ご覧の通り、ソート前だとバラバラになっています。

var a = [Int: [String: String]]()

今回は実際のアプリケーションと同じような感じでDictionary型の変数を用意しました。

で、

a[0] = ["a": "あ", "b": "た"]
a[1] = ["a": "い", "b": "ち"]
a[2] = ["a": "う", "b": "つ"]
a[3] = ["a": "え", "b": "て"]
a[4] = ["a": "お", "b": "と"]
a[5] = ["a": "か", "b": "な"]

と、この様にテスト用のデータを入力しておいたわけです。
これが、上の画像のソート前を見るとわかりますが、バラバラになっているのがわかります。

せめて、キーによるソートがしたい。

let a1 = a.sorted{
  if $0.key == $1.key {
    return $0.value.first! < $1.value.first!
  } else {
    return $0.key < $1.key
  }
}

ソート一つで結構な感じになっていますが、これが確実なんでしょう。

あ、変数「a1」としているのは、結果を入れておく変数なんですが、同じ変数には代入できませんでした。エラーになってしまいます。

コメントを残す

メールアドレスが公開されることはありません。