프로젝트를 진행하던 도중에 SwiftData를 사용하여 데이터를 영구 저장할 수 있는 기능을 추가하려다 아래와 같은 상황을 마주하게 되었습니다.
분명 문제되는 부분은 없어 보이는데 왜 안되는지 구글링을 계속 하였지만 해결되지 않았습니다..
시도한것
- Apple의 데모 버전을 따라하기
- @Main 에서 modelContainer를 initialize해보기
- @Preview를 담아내는 뷰를 @MainActor로 지정하여 메인 스레드에서 동작하도록 만들기
하지만 문제는 엄청 간단한 곳에서 해결되었습니다.
@main
struct SmartMovieApp: App {
@State private var popularmovie = MoviePopularModel()
@State private var detailemovie = MovieDetailModel()
@State private var searchmovie = MovieSearchModel()
@State private var favoriteMovie = FavoriteMovie() // 바로 여기
var body: some Scene {
WindowGroup {
ContentView()
.environment(popularmovie)
.environment(detailemovie)
.environmentObject(searchmovie)
}
.modelContainer(for: FavoriteMovie.self)
}
}
@Model 클래스인 FavoriteMovie init의 기본값을 설정에서 뺐더니 문제점이 수면위로 떠올랐습니다.
애초에 @Model 클래스를 State로 받는 것이 아닌데 @State 프로퍼티 래퍼를 붙여서 만들었기 때문에 문제가 발생하였습니다.
해당 코드를 지우고 나니 에러가 해결되었습니다.
import SwiftUI
import SwiftData
@main
struct SmartMovieApp: App {
@State private var popularmovie = MoviePopularModel()
@State private var detailemovie = MovieDetailModel()
@State private var searchmovie = MovieSearchModel()
var body: some Scene {
WindowGroup {
ContentView()
.environment(popularmovie)
.environment(detailemovie)
.environmentObject(searchmovie)
}
.modelContainer(for: FavoriteMovie.self)
}
}
복잡한 문제라고 생각하지만 실제로는 사소한 문제일 수도 있다는 것을 알게되었습니다.
'SwiftUI > 에러해결' 카테고리의 다른 글
SwiftUI - Observable 여러 뷰에서 데이터 업데이트 안됨 (0) | 2024.08.21 |
---|---|
SwiftUI - ChatGPT 에 이미지 전송 안됨 (0) | 2024.08.10 |
PhotosPicker 사진 회전되어 출력되는 현상 해결 (0) | 2024.07.10 |
JSONDecoder로 Decode할 때 에러 (0) | 2024.05.08 |
may be missing as an ancestor of this view 에러 (0) | 2024.03.16 |