【问题标题】:Filter by date component in Realm在 Realm 中按日期组件过滤
【发布时间】:2018-11-20 09:13:37
【问题描述】:

嗨,我想在领域中按年份过滤结果,我做了一些事情,但它的返回类型是 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: $0.date as Date) == 2018
    }

【问题讨论】:

    标签: swift date filter realm predicate


    【解决方案1】:

    不幸的是,事情没那么简单。 Results.filter 接受 nspredicate 或谓词格式字符串。

    let trainingsBetweenDates = realm.objects(Trainings.self).filter("date BETWEEN {%@, %@}", startDate, endDate)
    

    您可以使用此处描述的方法自己制作边界日期:How do you create a swift Date object

    【讨论】:

    • 谢谢,我试试
    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多