Swift编译器在某种程度上没有提供有用的错误,这是一个问题。真正的问题是
NSDate不能直接比较
<。相反,您可以使用
NSDate的
compare方法,如下所示:
days.sort({ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending })
另外,您也可以扩展
NSDate来实现
Comparable协议,以便它可以与之比较
<(与
<=,
>,
>=,
==):
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 { }
注意: 您只需要实现<
与==
上面显示,然后休息运营商<=
,>
等会通过标准库提供。
有了它,您原来的排序功能应该可以正常工作:
days.sort({ $0.date < $1.date })