通过 NSDate 对象属性进行 Swift 过滤 [英] Swift filter by NSDate object property

查看:43
本文介绍了通过 NSDate 对象属性进行 Swift 过滤的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I would like to filter my custom objects with a date property.

例如:

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

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

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

Now i have a List of maybe 500 Events, and i just want to show the Events for a specific date. I could loop through all Objects, and create a new Array of Objects, but could i also use a filter?

我尝试过这样的事情:

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

日期是特定日期的 NSDate 对象,但我无法使用 > 操作符.

Where date is a NSDate Object for a specific date, but i am not able to use the > operater.

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

Is there an easy way to get all the events for a specific date, where the date is between the dateFrom and dateTo period?

推荐答案

感谢 Martin 为我指明了正确的方向.

Thanks to Martin for pointing me into the right direction.

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

Here is an answer if someone else is looking how to solve this in Swift:

向 NSDate 添加扩展:

Add an Extension to 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 比较.

So you are able to use the < and > operator for NSDate comparison.

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

这篇关于通过 NSDate 对象属性进行 Swift 过滤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆