Как фильтровать на основе переменной A, если B равен нулю, в противном случае на основе B? - PullRequest
0 голосов
/ 25 апреля 2020

Мой объект области похож на следующий


final class Item: Object {

    @objc dynamic var id: Int = 0
    @objc dynamic var editTime: Double = 0 // timestamp
    @objc dynamic var remindTime: Double = 0 // timestamp

}

Мне нужно получить данные в диапазоне, скажем, между 2020-04-23 и 2020-04-24.
Но правило сравнивается с editTime, если remindTime равно 0, в противном случае используйте remindTime для сравнения.
Метод sort в Swift Sequence не является хорошим выбором в моем случае, поскольку он будет загружать все данные ( может быть несколько тысяч элементов) в память.

Вместо этого я хотел бы использовать NSPredicate, но это кажется невозможным.

В настоящее время мое решение состоит в определении другой переменной, скажем filterTime, для представления editTime или remindTime.
Недостатком является необходимость обновления filterTime при обновлении remindTime или editTime, если remindTime равно 0, что делает код немного грязно.

Есть ли хорошее решение для этого?

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