This is partly an issue with the Swift compiler not giving you a helpful error. The real issue is that NSDate can’t be compared with < directly. Instead, you can use NSDate‘s compare method, like so:
days.sort({ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending })
Alternatively, you could extend NSDate to implement the Comparable protocol so that it can be compared with < (and <=, >, >=, ==):
public func <(a: NSDate, b: NSDate) -> Bool {
return a.compare(b) == NSComparisonResult.OrderedAscending
}
public func ==(a: NSDate, b: NSDate) -> Bool {
return a.compare(b) == NSComparisonResult.OrderedSame
}
extension NSDate: Comparable { }
Note: You only need to implement < and == and shown above, then rest of the operators <=, >, etc. will be provided by the standard library.
With that in place, your original sort function should work just fine:
days.sort({ $0.date < $1.date })