Невозможно отфильтровать после даты в Realm Swift - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь применить фильтр к области, который включает Date, но безуспешно.

Я обнаружил, что объект Date нельзя передать, потому что формат% @ ожидает объект Foundation в качестве аргумента. , поэтому я применил приведение к NSDate.

let newDate = Date()
realm.objects(E.self)
            .filter(String(format: "%@ <= %@", key, newDate as NSDate)).first

Появляется проблема "Невозможно проанализировать метку строки формата = = 2020-03-20 08:21:00 +0000"

key - это имя поля, которое в данном случае является «меткой времени», а в модели оно имеет тип Дата.

Любой вклад приветствуется.

Спасибо

1 Ответ

2 голосов
/ 20 марта 2020

Вы должны использовать:

.filter("\(key) <= %@", newDate as NSDate)

Это вызывает перегрузку метода filter Realm, который принимает формат и аргументы.

String(format:) - это неправильная вещь, поскольку здесь используется обычное форматирование строк. Но здесь вы хотите, чтобы дата была отформатирована в соответствии с правилами NSPredicate форматов. С другой стороны, key можно просто интерполировать в строку, потому что имя столбца таблицы не нуждается в специальном формате.

Если key взято из UITextField или что-то вроде что тогда вам, возможно, придется остерегаться атак с помощью инъекций, а также заранее проверить и / или избежать действия key.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...