Обложка канала

iOS Dev

iOS разработчик, который делится фишками, своим опытом и опытом других. В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки Авторский канал, iOS разработка

iOS Dev

4 года назад
Открыть в
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