swift - 在 Realm 中按日期组件过滤

标签 swift date filter realm predicate

您好,我想按 Realm 中的年数过滤结果,我做了一些事情,但它的返回类型是 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
    }

最佳答案

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

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

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

关于swift - 在 Realm 中按日期组件过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53389662/

相关文章:

arrays - 如何在 Swift 中合并两个自定义类型数组并删除重复的自定义类型项?

java - 在 Java 中插入日期以访问数据库 - 奇怪的问题

java - 检查日期是否在范围内

dictionary - Clojure - 在最内层过滤嵌套映射

image - 图像的可训练 "Spam-Filter"

java - AlertDialog 自动关闭

php - 通过php上传图片到服务器

ios - 同一 TableView 中的单选和多选

swift - RealityKit – 什么是 `steelBox` 实例加载?

MySQL 查询按周计算当前 52 周的项目?