SwiftUI:如何正确使用init()?

cedebl8k  于 2023-02-07  发布在  Swift
关注(0)|答案(1)|浏览(187)

我尝试使用init来调用ViewModel类中的fetchProducts函数。但是当我添加init时,我得到了以下2个错误:
Variable 'self.countries' used before being initialized
以及
Return from initializer without initializing all stored properties
变量countries是绑定的,所以在这个视图中不需要初始化值。我用错init了吗?

struct ContentView: View {
    
    @Namespace var namespace;
    @Binding var countries: [Country];
    @Binding var favLists: [Int];
    @State var searchText: String = "";

    @AppStorage("numTimeUsed") var numTimeUsed = 0;
    @Environment(\.requestReview) var requestReview
    
    @StateObject var viewModel = ViewModel();
    
    init() {
        viewModel.fetchProducts()
    }

    var body: some View {

    }

}
ryevplcw

ryevplcw1#

看看当你使用ContentView时自动完成给你的初始化器...

ContentView(countries: Binding<[Country]>, favLists: Binding<[Int]>)

如果你正在创建自己的初始化器,它将需要那些相同的参数,例如。

init(countries: Binding<[Country]>, favLists: Binding<[Int]>) {
    _countries = countries
    _favLists = favLists

    viewModel.fetchProducts()
}

或者,使用默认的初始化器,而不是...

onAppear {
    viewModel.fetchProducts()
}

相关问题