TGViewer
iOS Dev iOS Dev @iosdev · 7.92K subscribers
Post #497 2.25K
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
  • 👍 28
  • 🔥 8
  • ❤‍🔥 4
  • 👏 1
More from @iosdev
  1. Oct 7, 2026Работа с модальными экранами на iPhone Duo На iPhone Duo всплывающие окна могут выглядеть…
  2. Oct 6, 2026⚡️ Apple обязали всех делать поддержку iPhone Duo с апреля 2027 года Сегодня выкатили обно…
  3. Oct 5, 2026iPhone Duo UIKit Q&A: большая подборка ответов от инженеров Apple 📖 В своём блоге Антон с…
  4. Oct 1, 2026SwiftUI Charts и динамическое маскирование Одним из применений для диаграмм является разны…
  5. Sep 29, 2026⚡️Сегодня ночью десятки тысяч приложений массово начали крашиться из-за либы для аналитики…
  6. Sep 28, 2026От pbxproj к xcproj: разбор конфигураций проекта 📖 В этой статье можно посмотреть на новы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →