iOS разработчик, который делится фишками, своим опытом и опытом других.
В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки
Авторский канал, iOS разработка
NSPredicate в Swift: определение, примеры и один интересный фактПредикаты используются при построении поискового запроса или для фильтрации в памяти с помощью определения логических условий.
Хотя предикаты принято создавать непосредственно из экземпляров NSComparisonPredicate, NSCompoundPredicate и NSExpression, часто предикаты создаются с помощью обычных (форматных) строк.
Рассмотрим некоторые способы задания предикатов.
⚪ Простые сравнения. Пример: jobTitle == "Team Lead" или channelName == "iOS Dev".
⚪ Поиск без учета регистра и диакритических знаков, например, name contains[cd] "Bruce".
💡Интересный факт: здесь c это case-insensitive (без учёта регистра), а d - diacritic insensitive (игнорим диакритический знак, то есть если в поиске будет два символа c и ç, они попадут в условие).
⚪ Логические операции, например firstName like "Ivan" или lastName like "Ivanov".
Нельзя не уточнить, что like сработает как == для этого условия.
⚪ Ограничения временного диапазона, например, date between {$YESTERDAY, $TOMORROW}.
⚪ Относительные условия, например, group.name like "work*".
⚪ Агрегатные операции, например @sum.items.price < 1000.
БОНУС
🟢 Ключевое слово MATCHES можно использовать для поиска с помощью регулярки.
Пример: NSPredicate(format: "name MATCHES %@", query).
🟢 А для поиска строк, начинающихся или заканчивающихся заданным условием, пригодятся BEGINSWITH и ENDSWITH.
📖 Полный справочник по синтаксису можно посмотреть в документации.
📖 Вы также можете создавать предикаты, включающие переменные, используя метод evaluate(with:substitutionVariables:), чтобы предварительно определить предикат перед заменой конкретных значений в рантайме.
@iOS Dev