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)
}

 

 

 

 

 

 

 

 

 

 

 

 

 

ytw_developer