Arrayの中のNSDictionaryのキーを元に並び替える

例えばArrayの中にNSDictionaryがdateという変数がNSDateの型を持っていて、dateの新しい順に並び替える場合だと以下のようになる。

コード

var data:Array < Dictionary < String,AnyObject > > = [
            ["id": "1", "name": "aaa", "date": NSDate().addComponentsToDate(seconds: 0, minutes: 0, hours: 0, days: 2, weeks: 0, months: 0, years: 0)],
            ["id": "2", "name": "bbb", "date": NSDate().addComponentsToDate(seconds: 0, minutes: 0, hours: 0, days: 1, weeks: 0, months: 0, years: 0)],
            ["id": "3", "name": "ccc", "date": NSDate()],
        ]
        
sort(&data) {
   (a:Dictionary < String,AnyObject >, b:Dictionary < String,AnyObject >) -> Bool in
   let aDate = a["date"] as NSDate
   let bDate = b["date"] as NSDate
return aDate.compare(bDate) == NSComparisonResult.OrderedDescending
            

}
println(data)
実行結果は
[[id: 1, date: 2014-12-24 08:41:48 +0000, name: aaa], [id: 2, date: 2014-12-23 08:41:48 +0000, name: bbb], [id: 3, date: 2014-12-22 08:41:48 +0000, name: ccc]]
となる。 ちなみにNSComparisonResult.OrderedAscendingにすると、日付の古い順に並び替えることができる。

Related Contents

Pickup Contents