我想用日期属性过滤我的自定义对象.
例如:
class Event
{
let dateFrom: NSDate!
let dateTo: NSDate!
init(dateFrom: NSDate, dateTo: NSDate) {
self.dateFrom = dateFrom
self.dateTo = dateTo
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个可能有500个事件的列表,我只想显示特定日期的事件.我可以遍历所有对象,并创建一个新的对象数组,但我还可以使用过滤器吗?
我试过这样的事:
let specificEvents = eventList.filter( { return $0.dateFrom > date } )
Run Code Online (Sandbox Code Playgroud)
其中date是特定日期的NSDate对象,但我无法使用> operater.
是否有一种简单的方法可以获取特定日期的所有事件,其中日期在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 { }
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用<和>运算符进行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} )
Run Code Online (Sandbox Code Playgroud)