이 에러는 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]
'SwiftUI > 에러해결' 카테고리의 다른 글
SwiftUI - MapUserLocationButton 작동 안될 때 (2) | 2024.09.10 |
---|---|
SwiftUI - Sheet 내부에서 꾹 눌렀을 때만 동작, long press (0) | 2024.09.02 |
SwiftUI - Observable 여러 뷰에서 데이터 업데이트 안됨 (0) | 2024.08.21 |
SwiftUI - ChatGPT 에 이미지 전송 안됨 (0) | 2024.08.10 |
PhotosPicker 사진 회전되어 출력되는 현상 해결 (0) | 2024.07.10 |