SwiftData를 사용할 때 문법 중 하나가 바로 #Predicate 입니다.
데이터를 필터링하거나 검색 조건을 지정할 때 사용됩니다.
예시:
let predicate = #Predicate<TimerModel> { $0.timerID == id }
→ TimerModel 안에서 timerID 값이 id와 같은 데이터를 찾는 조건
#Predicate<ModelType> { $0.property == value }
ModelType: 조건을 적용할 데이터 모델 (예: TimerModel)$0: 각 객체를 가리킴 (첫 번째 매개변수)property: 비교할 속성value: 찾고자 하는 값let predicate = #Predicate<User> { $0.name == "Alice" }
let predicate = #Predicate<Task> { $0.priority > 3 }
let predicate = #Predicate<Task> {
$0.isCompleted == false && $0.dueDate < Date()
}
@Query(filter: #Predicate<TimerModel> { $0.timerID == id })
var timers: [TimerModel]
→ timerID가 특정 값과 일치하는 데이터만 쿼리됨.
#Predicate는 SwiftData에서 데이터를 필터링할 때 사용되는 조건문이다. WHERE과 같은 역할을 하며, Swift 문법답게 타입 안정성을 제공한다. $0은 현재 모델 인스턴스를 가리키는 약속된 표현이다.