Swift过滤NSDate对象属性

时间:2015-03-17 09:51:49

标签: ios swift nsdate

我想用日期属性过滤我的自定义对象。

例如:

class Event
{
    let dateFrom: NSDate!
    let dateTo: NSDate!

    init(dateFrom: NSDate, dateTo: NSDate) {
        self.dateFrom = dateFrom
        self.dateTo = dateTo
    }
}

现在我有一个可能包含500个事件的列表,我只想显示特定日期的事件。我可以遍历所有对象,并创建一个新的对象数组,但我还可以使用过滤器吗?

我试过这样的事情:

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

其中date是特定日期的NSDate对象,但我无法使用>算子。

是否有一种简单的方法可以获取特定日期的所有事件,其中日期介于dateFrom和dateTo期间之间?

2 个答案:

答案 0 :(得分:5)

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

所以你可以使用&lt;和&gt;运算符用于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} )

答案 1 :(得分:0)

对于Swift 3.x更新: -

DataFrames