在 Realm 中按日期组件过滤
Filter by date component in Realm
您好,我想在领域中按年数过滤结果,我做了一些事情,但它的 return 类型是 LazyFilterCollection<>。我怎样才能修复它以获得结果?我认为可以使用 NSPredicate 来完成,但我不明白如何在谓词中使用日期组件。
这是我的训练模型。
class Training: Object {
@objc dynamic var id = 0
@objc dynamic var date = NSDate()
var exercises = RealmSwift.List<TrainingExercise>()
convenience init(date: NSDate, exercise: TrainingExercise) {
self.init()
self.exercises.append(exercise)
}
override class func primaryKey() -> String? {
return "id"
}
}
这里是我试图过滤的表达式。
let trainingsFilteredByYear = trainings.filter {
return Calendar.current.component(.year, from: [=11=].date as Date) == 2018
}
不幸的是,事情并没有那么简单。 Results.filter 采用 nspredicate 或谓词格式字符串。
let trainingsBetweenDates = realm.objects(Trainings.self).filter("date BETWEEN {%@, %@}", startDate, endDate)
您可以使用此处描述的方法自行设置边界日期:How do you create a swift Date object
您好,我想在领域中按年数过滤结果,我做了一些事情,但它的 return 类型是 LazyFilterCollection<>。我怎样才能修复它以获得结果?我认为可以使用 NSPredicate 来完成,但我不明白如何在谓词中使用日期组件。
这是我的训练模型。
class Training: Object {
@objc dynamic var id = 0
@objc dynamic var date = NSDate()
var exercises = RealmSwift.List<TrainingExercise>()
convenience init(date: NSDate, exercise: TrainingExercise) {
self.init()
self.exercises.append(exercise)
}
override class func primaryKey() -> String? {
return "id"
}
}
这里是我试图过滤的表达式。
let trainingsFilteredByYear = trainings.filter {
return Calendar.current.component(.year, from: [=11=].date as Date) == 2018
}
不幸的是,事情并没有那么简单。 Results.filter 采用 nspredicate 或谓词格式字符串。
let trainingsBetweenDates = realm.objects(Trainings.self).filter("date BETWEEN {%@, %@}", startDate, endDate)
您可以使用此处描述的方法自行设置边界日期:How do you create a swift Date object