Фильтр по дате в Realm - PullRequest
       29

Фильтр по дате в Realm

0 голосов
/ 20 ноября 2018

Привет! Я хочу отфильтровать результаты по номеру года в области, я что-то сделал, но его тип возвращаемого значения - 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
    }

1 Ответ

0 голосов
/ 20 ноября 2018

К сожалению, не все так просто.Results.filter принимает nspredicate или строку формата предиката.

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

Вы можете сами создать даты границы, используя методы, описанные здесь: Как создать объект Swift Date

...