NSPredicates.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import CoreData
  2. import Foundation
  3. extension Date {
  4. static var oneDayAgo: Date {
  5. Calendar.current.date(byAdding: .day, value: -1, to: Date())!
  6. }
  7. static var halfHourAgo: Date {
  8. Calendar.current.date(byAdding: .minute, value: -30, to: Date())!
  9. }
  10. static var twoHoursAgo: Date {
  11. Calendar.current.date(byAdding: .hour, value: -2, to: Date())!
  12. }
  13. static var sixHoursAgo: Date {
  14. Calendar.current.date(byAdding: .hour, value: -6, to: Date())!
  15. }
  16. static var oneWeekAgo: Date {
  17. Calendar.current.date(byAdding: .day, value: -7, to: Date())!
  18. }
  19. static var oneMonthAgo: Date {
  20. Calendar.current.date(byAdding: .month, value: -1, to: Date())!
  21. }
  22. static var threeMonthsAgo: Date {
  23. Calendar.current.date(byAdding: .month, value: -3, to: Date())!
  24. }
  25. }
  26. extension NSPredicate {
  27. static let all = NSPredicate(format: "TRUEPREDICATE")
  28. static let none = NSPredicate(format: "FALSEPREDICATE")
  29. static var predicateForOneDayAgo: NSPredicate {
  30. let date = Date.oneDayAgo
  31. return NSPredicate(format: "date >= %@", date as NSDate)
  32. }
  33. static var predicateFor30MinAgo: NSPredicate {
  34. let date = Date.halfHourAgo
  35. return NSPredicate(format: "date >= %@", date as NSDate)
  36. }
  37. static var predicateFor120MinAgo: NSPredicate {
  38. let date = Date.twoHoursAgo
  39. return NSPredicate(format: "date >= %@", date as NSDate)
  40. }
  41. static var predicateForSixHoursAgo: NSPredicate {
  42. let date = Date.sixHoursAgo
  43. return NSPredicate(format: "date >= %@", date as NSDate)
  44. }
  45. static var predicateForOneWeek: NSPredicate {
  46. let date = Date.oneWeekAgo
  47. return NSPredicate(format: "date >= %@", date as NSDate)
  48. }
  49. static var predicateForOneMonth: NSPredicate {
  50. let date = Date.oneMonthAgo
  51. return NSPredicate(format: "date >= %@", date as NSDate)
  52. }
  53. static var predicateForThreeMonths: NSPredicate {
  54. let date = Date.threeMonthsAgo
  55. return NSPredicate(format: "date >= %@", date as NSDate)
  56. }
  57. }