まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

辞書の値をもとにソートする

キーをもとにソートする記事はけっこうありましたが、値でソートするものが見当たらなかったのでポストです。
間違ってるというか力技な気がしてならないですが・・・

辞書のデータ:
・キー:Number・値:1とキー:Name・値:Aのセット
・キー:Number・値:3とキー:Name・値:Bのセット
・キー:Number・値:2とキー:Name・値:Cのセット
・キー:Number・値:5とキー:Name・値:Dのセット

をNumberキーの値が大きい順に並び替えて、いちばん大きい値のNameの値を取り出します(ヤヤコシイ
上記の場合だと、D=5でDがいちばん大きいので、Dになります。
ついでにDがいちばん大きかったかそうでなかったかの判定をしています。

NSArray *namaArray=[NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:1],@"Number",@"A",@"Name",nil],[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:3],@"Number",@"B",@"Name", nil] ,[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:2],@"Number",@"C",@"Name", nil] ,[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:5],@"Number",@"D",@"Name", nil],nil];

        //数値が大きい順にソート
    NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"Number" ascending:NO]; 
    //ソートして出来た配列
    NSArray * sortedArray = [namaArray sortedArrayUsingDescriptors:
                             [NSArray arrayWithObject:descriptor]];
//文字列に
    NSString *str = [sortedArray componentsJoinedByString:@","];
//Name = ?のところだけ取り出す
NSString *str2 = [str substringWithRange:NSMakeRange(5,10)];
 
    
    NSLog(@"%@",str2);

  //取り出した文字列=いちばん大きい値を持つセットのNameの値がDかどうか
    NSRange searchResult = [str2 rangeOfString:@"D"];
    if(searchResult.location == NSNotFound){
        NSLog(@"ない・・・");
    }else{
        // みつかった場合の処理
         NSLog(@"あったよ");
    }



    }