Preview에서 SwiftData를 사용하기 위해서는 modelContainer를 설정해줘야 합니다
다음과 같이 ModelContainer를 정의하여 preview에서 사용될 데이터를 만들어야 합니다. 그렇지 않으면 다음과 같이 에러가 발생하는 것을 확인할 수 있습니다.
configurations: ModelConfiguration(isStoredInMemoryOnly: true) 란 객체를 생성할 때 이 옵션을 true로 설정하면, 해당 컨테이너는 디스크에 데이터를 쓰지 않고 모든 작업을 메모리 내에서 수행합니다.
import SwiftData
@MainActor
let previewContainer: ModelContainer = {
do {
let container = try ModelContainer(
for: FavoriteMovie.self,
configurations: ModelConfiguration(isStoredInMemoryOnly: true)
)
let modelContext = container.mainContext
if try modelContext.fetch(FetchDescriptor<FavoriteMovie>()).isEmpty {
Favorite.contents.forEach { container.mainContext.insert($0) }
}
return container
} catch {
fatalError("Failed to create container")
}
}()
이후 위에서 만든 데이터는 아래처럼 추가하여 문제를 해결할 수 있게 됩니다.
#Preview {
MainView()
.modelContainer(previewContainer)
}
'SwiftUI' 카테고리의 다른 글
Swift - Sheet, presentation 뒤에 배경하고 상호작용 presentationBackgroundInteraction (0) | 2024.07.18 |
---|---|
DisclosureGroup 로 접는 뷰 만들기 (0) | 2024.07.13 |
swiftUI - 간단하게 검색창 만들기 (0) | 2024.06.15 |
SwiftUI - 긴 글자 Text에서 일부만 표현하기 (with truncationMode) (0) | 2024.06.13 |
async let 으로 비동기 작업들을 동시에 수행하기 (2) (2) | 2024.06.12 |