NSPredicates.swift 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 oneHourAgo: Date {
  8. Calendar.current.date(byAdding: .minute, value: -60, to: Date())!
  9. }
  10. static var halfHourAgo: Date {
  11. Calendar.current.date(byAdding: .minute, value: -30, to: Date())!
  12. }
  13. static var twentyMinutesAgo: Date {
  14. Calendar.current.date(byAdding: .minute, value: -20, to: Date())!
  15. }
  16. static var twoHoursAgo: Date {
  17. Calendar.current.date(byAdding: .hour, value: -2, to: Date())!
  18. }
  19. static var sixHoursAgo: Date {
  20. Calendar.current.date(byAdding: .hour, value: -6, to: Date())!
  21. }
  22. static var oneWeekAgo: Date {
  23. Calendar.current.date(byAdding: .day, value: -7, to: Date())!
  24. }
  25. static var oneMonthAgo: Date {
  26. Calendar.current.date(byAdding: .month, value: -1, to: Date())!
  27. }
  28. static var threeMonthsAgo: Date {
  29. Calendar.current.date(byAdding: .month, value: -3, to: Date())!
  30. }
  31. }
  32. extension NSPredicate {
  33. static let all = NSPredicate(format: "TRUEPREDICATE")
  34. static let none = NSPredicate(format: "FALSEPREDICATE")
  35. static var predicateForOneDayAgo: NSPredicate {
  36. let date = Date.oneDayAgo
  37. return NSPredicate(format: "date >= %@", date as NSDate)
  38. }
  39. static var predicateForOneHourAgo: NSPredicate {
  40. let date = Date.oneHourAgo
  41. return NSPredicate(format: "date >= %@", date as NSDate)
  42. }
  43. static var predicateFor30MinAgo: NSPredicate {
  44. let date = Date.halfHourAgo
  45. return NSPredicate(format: "date >= %@", date as NSDate)
  46. }
  47. static var predicateFor20MinAgo: NSPredicate {
  48. let date = Date.twentyMinutesAgo
  49. return NSPredicate(format: "date >= %@", date as NSDate)
  50. }
  51. static var predicateFor30MinAgoForDetermination: NSPredicate {
  52. let date = Date.halfHourAgo
  53. return NSPredicate(format: "deliverAt >= %@", date as NSDate)
  54. }
  55. static var predicateFor120MinAgo: NSPredicate {
  56. let date = Date.twoHoursAgo
  57. return NSPredicate(format: "date >= %@", date as NSDate)
  58. }
  59. static var predicateForSixHoursAgo: NSPredicate {
  60. let date = Date.sixHoursAgo
  61. return NSPredicate(format: "date >= %@", date as NSDate)
  62. }
  63. static var predicateForOneWeek: NSPredicate {
  64. let date = Date.oneWeekAgo
  65. return NSPredicate(format: "date >= %@", date as NSDate)
  66. }
  67. static var predicateForOneMonth: NSPredicate {
  68. let date = Date.oneMonthAgo
  69. return NSPredicate(format: "date >= %@", date as NSDate)
  70. }
  71. static var predicateForThreeMonths: NSPredicate {
  72. let date = Date.threeMonthsAgo
  73. return NSPredicate(format: "date >= %@", date as NSDate)
  74. }
  75. }