【メモ】Dictionaryからvalueの最大値を取得してそのKeyを返す関数を作ってみた【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系の記事が多くなるんじゃないかなぁと思います。

 

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

 

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

2018/04/12追記 一応Swift4に
もっと上手いことできる気がするけど頑張れなかった。


とりあえず[String:Int]型限定ですが
参考になれば。
Swift ,
コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS
more