이 에러는 SwiftData 에서 filter 를 사용하였을 때 발생할 수 있는 에러입니다

 

 

filter 를 사용하여 특정 데이터를 가져오기 위해서는 Predicate 를 만들어 가져와야 합니다.

 

문제발생

하지만 Predicate 에서는 복잡한 데이터를 사용할 수 없습니다. (예를 들어 동적인 데이터 Date() 처럼)

static func predicate() -> Predicate<RecordReceipts> {
    return #Predicate<RecordReceipts> { $0.date == Date().description }
}

 

문제해결

이 문제를 해결하기 위해서는 원하는 조건 데이터를 predicate 함수 내부에 let 으로 만들어 다음과 같이 해결합니다.

static func predicate() -> Predicate<RecordReceipts> {
  let now = Date()
    return #Predicate<RecordReceipts> { $0.date == now.description }
}

 

이후 다음과 같이 Query 의 filter 파라미터에 넣어 원하는 데이터를 성공적으로 가져올 수 있습니다.

@Query(filter: predicate()) private var listReceipts: [RecordReceipts]

 

 

ytw_developer