Мне нужно открыть представление с именем RequestDetails.
В двух случаях это представление можно открыть.
Предоставление данных для открытия этого запроса
Предоставление ссылки на документ Firestore
В этом случае у меня нет всех деталей этой спецификации c Запрос, но у меня есть просто ссылка на документ Firestore. Я использую эту ссылку, чтобы сделать запрос, как только появится это представление, и получить сведения об этом запросе RequestDetail(reference: reference)
class RequestViewModel: ObservableObject {
@Published var request: RequestModel?
@Published var requestReference: DocumentReference?
init(request: RequestModel? = nil, requestReference: DocumentReference? = nil) {
self.request = request
self.requestReference = requestReference
}
func loadRequest() {
FirestoreService().fetchDocument(documentReference: self.requestReference) { (request: RequestModel) in
DispatchQueue.main.async {
self.request = request
}
}
}
}
struct RequestDetails: View {
@State var reference: DocumentReference?
@State var request: RequestModel?
@ObservedObject var vm: RequestViewModel
var body: some View {
VStack {
if request != nil {
Text(self.request?.senderFirstName)
}
}.onAppear {
if self.vm.package == nil {
self.vm.loadRequest()
}
}
}
}
struct Home: View {
var request: RequestModel
var reference: DocumentReference
var body: some View {
VStack {
RequestDetail(request: request)
RequestDetail(reference: reference)
}
}
}
Дело в том, что я получаю много ошибок, и я интересно, в порядке ли лог c позади или нет. Правильно ли я использую шаблон модели представления?