通过NSDate对象属性的Swiftfilter

我想过滤我的自定义对象的date属性。

例如:

class Event { let dateFrom: NSDate! let dateTo: NSDate! init(dateFrom: NSDate, dateTo: NSDate) { self.dateFrom = dateFrom self.dateTo = dateTo } } 

现在我有一个列表,也许500个事件,我只想显示一个特定date的事件。 我可以遍历所有对象,并创build一个新的对象数组,但我也可以使用filter?

我尝试了这样的事情:

 let specificEvents = eventList.filter( { return $0.dateFrom > date } ) 

哪里date是特定date的NSDate对象,但我不能使用>操作。

有一个简单的方法来获取所有的事件在一个特定的date,其中的date是从dateFrom和dateTo期间?

感谢Martin给我指出了正确的方向。

这是一个答案,如果别人正在寻找如何在Swift中解决这个问题:

添加一个扩展到NSDate:

 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 { } 

所以你可以使用<和>运算符进行NSDate比较。

  var date = dateFormatter.dateFromString(dateString) var dateTomorrow = date?.dateByAddingTimeInterval(NSTimeInterval(60*60*24)) // add one Day eventsToday = allEvents.filter( { return $0.dateFrom >= date && $0.dateTo < dateTomorrow} ) 

对于Swift 3.x更新: –

 extension Date: Comparable{ public static func <(a: Date, b: Date) -> Bool{ return a.compare(b) == ComparisonResult.orderedAscending } static public func ==(a: Date, b: Date) -> Bool { return a.compare(b) == ComparisonResult.orderedSame } }