SwiftUI - передача переменной в наблюдаемый объект - PullRequest
0 голосов
/ 26 марта 2020

У меня есть представление, которое получает значение идентификатора из предыдущего представления. Мне также нужно взять это значение идентификатора и передать его в ObservableObject, чтобы я мог выполнить запрос Firestore для этого идентификатора. Я в растерянности относительно того, как получить этот идентификатор для моего ObservableObject.

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 для запроса на основе этого значения, определенного в верхней части зрения.

1 Ответ

3 голосов
/ 27 марта 2020

Я думаю, что ваш getItemsData класс должен наследоваться от ObservableObject

class GetItemsData: ObservableObject {...}

Чтобы получить itemId в вашем экземпляре GetItemsData, вы можете добавить параметр в init()

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

}

К т ie все вместе у вас есть два варианта. Вы можете добавить init к вашему ItemView, например:

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

Я предпочитаю вместо этого передавать наблюдаемый объект в представление, так что это больше похоже на модель представления в MVVM

struct ItemView: View {
    let itemName: String
    let itemModel: GetItemsData
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...