Reputation: 1078
This is my code. Do you know what is this error? Thank you!
struct PlaceholderImageView: View {
@ObservedObject var imageModel: PlaceholderImageViewModel
@Environment(\.MyImageCacheValue) var cache: MyImageCache
init(urlString: String) {
imageModel = PlaceholderImageViewModel(urlString: urlString, cache: cache) // error: 'self' used before all stored properties are initialized
}
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}
Upvotes: 0
Views: 81
Reputation: 981
You are trying to initialize PlaceholderImageViewModel
before MyImageCache
is initialized. One way to resolve this is to create PlaceholderImageViewModel
in the caller view of PlaceholderImageView
and just pass the model directly.
struct PlaceholderImageViewSuperView: View {
@Environment(\.MyImageCacheValue) var cache: MyImageCache
var body: some View {
NavigationLink("Go to image view", destination: PlaceholderImageView(imageModel: PlaceholderImageViewModel(urlString: urlString, cache: cache)))
}
}
struct PlaceholderImageView: View {
@ObservedObject var imageModel: PlaceholderImageViewModel
var body: some View {
Text("Any text here")
}
}
Upvotes: 1