ios - 通过 NSDate 对象属性快速过滤

标签 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 期间?

最佳答案

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

关于ios - 通过 NSDate 对象属性快速过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29095950/

相关文章:

ios - Xcode 7.1 在模拟器崩溃时崩溃

php - 向我的 PHP 页面发送一个电子邮件地址,它会从 iOS/Swift 应用程序回复它

ios - 将 NSDate 转换为另一种格式

objective-c - NSDateFormatter 从字符串返回错误的日期

ios - 在自定义颜色 Canvas 上绘制 UIImage

ios - UITableViewHeaderFooterView 外观

swift - 在 Swift 中打印奇数个数

ios - 通过 Storyboard使用自动布局创建拉伸(stretch)标题

ios - WKInterfaceTimer 用作定时器开始和停止倒计时

javascript - 我可以使用 'UIKeyboardTypeTwitter' 作为 HTML 输入类型吗?