In Swift 2.0, how would you go about sorting an array of custom objects by a property? I know in Swift 1.2, this was done using sorted() and sort(). However, these methods no longer work in Xcode 7 beta 4. Thanks!
For example:
class MyObject: NSObject {
var myDate : NSDate
}
...
let myObject1 : MyObject = MyObject() //same thing for myObject2, myObject3
var myArray : [MyObject] = [myObject1, myObject2, myObject3]
//now, I want to sort myArray by the myDate property of MyObject.
In Swift 2:
You can use sort
method, using compare
to compare the two dates:
let sortedArray = myArray.sort { $0.myDate.compare($1.myDate) == .OrderedAscending } // use `sorted` in Swift 1.2
Or, if you want to sort the original array, you can sortInPlace
:
myArray.sortInPlace { $0.myDate.compare($1.myDate) == .OrderedAscending } // use `sort` in Swift 1.2
In Swift 3:
to return a sorted rendition of the array, use sorted
, not sort
let sortedArray = myArray.sorted { $0.myDate < $1.myDate }
to sort in place, it's now just sort
:
myArray.sort { $0.myDate < $1.myDate }
And with Swift 3's Date
type, you can use the <
operator.