SwiftUI - 将变量传递给 Observable 对象

杰森·特雷曼

我有一个从上一个视图接收 ID 值的视图。我还需要获取该 ID 值并将其传递到 ObservableObject 中,以便我可以对该 ID 运行 Firestore 查询。我不知道如何为我的 ObservableObject 获取该 ID。

struct ItemView: View {
   var itemName: String
   var itemID: String
   @ObservedObject var items = getItemsData()
   // ..... etc
   }


 class getItemsData() {
    @Published var data = [items]()
    init() {
       let db = Firestore.firestore()
       db.collection("items").whereField("itemID", isEqualTo: *THIS IS WHERE I NEED THE ITEMID *),addSnapshotListner {(snap, err) in ...
}

因此,在查询调用中,我需要调用 ItemID 值以根据在视图顶部定义的该值进行查询。

汤姆库利

我认为你的getItemsData类应该从 ObservableObject 继承

class GetItemsData: ObservableObject {...}

要将 itemId 放入您的 GetItemsData 实例,您可以向您的 init()

class GetItemsData: ObservableObject {
    init(itemId: String) {
        ...
    }
}

}

要将这一切联系在一起,您有两个选择。您可以向您的 ItemView 添加一个 init ,例如:

struct ItemView: View {
    let itemName: String
    let itemModel: GetItemsData
    init(itemName: String, itemID: String) {
        self.itemName = itemName
        itemModel = GetItemsData(itemId: itemID)
    }
}

我更喜欢将 observable 对象传递给视图,所以它更像是 MVVM 中的视图模型

struct ItemView: View {
    let itemName: String
    let itemModel: GetItemsData

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章