[TIL] #Predicate

Eden·2025년 9월 8일

SwiftData를 사용할 때 문법 중 하나가 바로 #Predicate 입니다.
데이터를 필터링하거나 검색 조건을 지정할 때 사용됩니다.


Predicate란?

  • 조건을 정의하는 표현식입니다.
  • 쉽게 말해 데이터베이스의 WHERE 절 같은 역할을 합니다.

예시:

let predicate = #Predicate<TimerModel> { $0.timerID == id }

TimerModel 안에서 timerID 값이 id와 같은 데이터를 찾는 조건


문법 구조

#Predicate<ModelType> { $0.property == value }
  • ModelType: 조건을 적용할 데이터 모델 (예: TimerModel)
  • $0: 각 객체를 가리킴 (첫 번째 매개변수)
  • property: 비교할 속성
  • value: 찾고자 하는 값

활용 예시

1. 특정 값과 일치하는 경우

let predicate = #Predicate<User> { $0.name == "Alice" }

2. 크거나 작은 값 비교

let predicate = #Predicate<Task> { $0.priority > 3 }

3. 여러 조건 조합

let predicate = #Predicate<Task> { 
    $0.isCompleted == false && $0.dueDate < Date()
}

SwiftData에서 사용 예시

@Query(filter: #Predicate<TimerModel> { $0.timerID == id })
var timers: [TimerModel]

timerID가 특정 값과 일치하는 데이터만 쿼리됨.


정리

  • #Predicate는 SwiftData에서 데이터를 필터링할 때 사용되는 조건문이다.
  • SQL의 WHERE과 같은 역할을 하며, Swift 문법답게 타입 안정성을 제공한다.
  • $0은 현재 모델 인스턴스를 가리키는 약속된 표현이다.
profile
iOS Dev

0개의 댓글