うるおいらんど

【メモ】Dictionaryからvalueの最大値を取得してそのKeyを返す関数を作ってみた【Swift】

Swift日常

追記があります。

後々自分でも使いたくなる時が来るような気がするので、メモ程度に書いておきます。

 

全体のコード

関数の全体のコードです。

// @return 最大値valueをもつKey
    func maxDicKey(dic:[String:Int]) -> String{
    //valueの最大値を取り出す
        let max = dic.values.maxElement();
        var maxKey:String = ""
        //辞書の中身をひとつずつ見ていく
        for (key,value) in dic{
            if value == max{
                print("dic key is \(key) , dic value is \(value)")
                if maxKey == ""{
                    maxKey = key
                }else{
                    print("同じ値の人がいます")
                }
                
            }
        }
        return maxKey
    }

 

使う時はラベル等で

label.text = "\(maxDicKey(dic))が優勝"

 

解説?はいらないかもしれませんが少しだけ

 

辞書型のvalueの最大値の取得は

dic.values.maxElement();

でできます。

 

中身を1つずつ見ていく場合は

for (key,value) in dic{

}

でできます

 

この中で、valueの値と最大値の値が等しい時にそれを返すようにしています。

 

ただし、最大値をもつKeyが1つとは限らないので、複数のKeyを返すならば配列等を返り値にすれば良いと思います。

複数からランダムで1つ返す〜等もできます

 

 

-----------------ここからひとりごと-----------------

 

久しぶりの記事更新です。

Swiftに関する記事なんて本当にいつぶりだろうという感じですね…

次のアプリというのを結構前から考えていて、企画書っぽいものも一応作って見たのですが、ずっとSwiftで作るかcocos2d-xを使用してc++で書くかを迷っていまして、最近は本当にうーんうーんと悩みながらごろごろだらだら過ごしていました。

結局、cocos2d-xを用いて作っていこうかなぁと思っています。

cocos2d-xを使ったアプリ制作は初めてになりますし、1冊本で勉強したのもunityで雨アガリを作る前のことだったので、正直ほとんど覚えていません。

まずは勉強から、という感じです。

 

そのため今後はcocos2d-x系の記事が多くなるんじゃないかなぁと思います。

 

わりとグラフィック面が面倒なアプリを作ろうとしているので、今までで一番規模は大きくなるんじゃないかなと思います。ゲームというほどでもないですが、ゲームです。

 

もう少し更新頻度も上げられる用に頑張りたいです。それではでは。

Additional Notes追記

一応Swift4に

もっと上手いことできる気がするけど頑張れなかった。

とりあえず[String:Int]型限定ですが 参考になれば。

Comments

コメントはありません。

現在コメントフォームは工事中です。