【问题标题】:ObservedObject not convertible to BindingObservedObject 不能转换为 Binding
【发布时间】:2020-04-14 05:54:29
【问题描述】:

我正在尝试使用 swiftUI 实现 MVVM

所以我有这个视图模型

class HomeViewModel: ObservableObject {
    @Published var favoriteStores = Array<ItemStore>()

    init() {
        for i in 0...10 {
            favoriteStores.append(ItemStore(storeName: "Store \(i)", storeImg: "image url"))
        }
    }
}

还有这个观点:

struct HomeView: View {
    @ObservedObject var homeVM = HomeViewModel()
    @State var faves = [
        ItemStore(storeName: "Store 0", storeImg: "image url"),
        ItemStore(storeName: "Store 1", storeImg: "image url"),
        ItemStore(storeName: "Store 2", storeImg: "image url")
    ]
    @State var searchText = ""


    var body: some View {
        NavigationView{
            GeometryReader { geometry in

                ScrollView{
                    VStack{

                        SearchBarView(searchText: self.$searchText)
                        Spacer()
                            .padding(.vertical, 5.0)
                        FavoriteStoresView(favoriteStores: self.homeVM.favoriteStores)
                        FiltersView()
                        StoresView()
                    }.padding()
                }

            }
        }
    }
}

这里的问题是当我使用self.homeVM.favoriteStores 时,我得到了:'[ItemStore]' is not convertible to 'Binding&lt;[ItemStore]&gt;'

但是当我改用@State var faves 时,它工作正常

我看了很多教程,它应该是这样工作的,因为 swiftUI 处理这部分,并用 Binding 包装它

【问题讨论】:

    标签: swift xcode mvvm binding swiftui


    【解决方案1】:

    FavoriteStoresView所在的行改为:

    FavoriteStoresView(favoriteStores: self.$homeVM.favoriteStores)
    

    (在成员变量前添加$

    【讨论】:

      猜你喜欢
      • 2020-03-29
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      相关资源
      最近更新 更多