私はもう少し調べて、Swift 3で ".sorted()"メソッドを見つけましたので、私の解決策を作りました。 「名前」プロパティと「年」プロパティで、私はオブジェクトの月使います、
let monthForNumber = ["January":1, "February":2, "March":3, "April":4, "May":5, "June":6, "July":7, "August":8, "September":9, "October":10, "November":11, "December":12]
をsemplicityについては、私が「月」の構造体を作成しました::
let month_1 = Month.init(name: "May", year: 2016)
let month_2 = Month.init(name: "April", year: 2010)
let month_3 = Month.init(name: "April", year: 2009)
let month_4 = Month.init(name: "January", year: 2026)
let month_5 = Month.init(name: "June", year: 2016)
let unsortedMonthsArray = [Month]()
unsortedMonthsArray.append(month_1)
unsortedMonthsArray.append(month_2)
unsortedMonthsArray.append(month_3)
unsortedMonthsArray.append(month_4)
unsortedMonthsArray.append(month_5)
let sortedArrayOfMonths = self.unsortedMonthsArray?.sorted(by: { (month1, month2) -> Bool in
if self.monthForNumber[month1.name!] != self.monthForNumber[month2.name!] {
if month1.year != month2.year {
return month1.year < month2.year
} else {
return self.monthForNumber[month1.name!]! < self.monthForNumber[month2.name!]!
}
} else {
if month1.year != month2.year {
return month1.year < month2.year
} else {
return self.monthForNumber[month1.name!]! < self.monthForNumber[month2.name!]!
}
}
})
を私は誰かが必要とする場合には投稿します
このソリューションは、文字列の配列( "monthName_monthYear")に簡単に変換できるMonthsのソートされた配列を提供します。
がDate' 'に文字列を変換し、それらを並べ替えます。 – vadian
完全なDateオブジェクトは必要ありません。文字列のみを並べ替える必要があります。 –