【发布时间】:2021-03-21 16:02:13
【问题描述】:
我正在学习 SwiftUI,我正在尝试使用 Firebase 从我的数据库中检索数据后检索信息。
我检索数据一次以摘要方式显示它,然后使用链接导航我尝试检索其余信息以获得更准确的显示,但我有一个错误。 我想在不使用 List 的情况下检索准确的数据。
PrintSpecificData.swift
//
// complete_deliv_view.swift
// db_test
//
// Created by admin on 21/03/2021.
//
import SwiftUI
struct complete_deliv_view: View {
@ObservedObject private var viewModel = delivViewModel()
var body: some View {
Text(self.viewModel.av_deliveries.from) // ERROR IS HERE
.onAppear() {
self.viewModel.fetchDelivResume()
}
}
}
struct complete_deliv_view_Previews: PreviewProvider {
static var previews: some View {
complete_deliv_view()
}
}
打印汇总数据
//
// ContentView.swift
// db_test
//
// Created by admin on 21/03/2021.
//
import SwiftUI
struct delivResum:Identifiable {
// SUMMARY INFORMATIONS
var id: String = UUID().uuidString
var when: String
var from: Int
var to: Int
var whath: Int
// FULL INFORMATIONS
var name: String
var adress: String
var to_adress: String
var tel: Int
}
struct ContentView: View {
@ObservedObject private var viewModel = delivViewModel()
var body: some View {
NavigationView {
NavigationLink(destination:complete_deliv_view()) {
List(viewModel.av_deliveries) { deliv in
HStack {
Text ("????")
Text(deliv.when)
Text ("????")
Text(String(deliv.from))
Text ("➡")
Text(String(deliv.to))
Text ("⏰")
Text("\(deliv.whath)h")
}
}
.navigationBarTitle("Livraisons")
.onAppear() {
self.viewModel.fetchDelivResume()
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
FetchDataFromFirebase.swift
//
// delivViewModel.swift
// db_test
//
// Created by admin on 21/03/2021.
//
import Foundation
import FirebaseFirestore
class delivViewModel : ObservableObject {
@Published var av_deliveries = [delivResum]()
private var db = Firestore.firestore()
func fetchDelivResume() {
db.collection("av_deliveries").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("Pas de livraison disponible ????")
return
}
self.av_deliveries = documents.map { (QueryDocumentSnapshot) -> delivResum in
let data = QueryDocumentSnapshot.data()
let when = data["when"] as? String ?? ""
let from = data["from"] as? Int ?? 0
let to = data["to"] as? Int ?? 0
let whath = data["whath"] as? Int ?? 0
let name = data["name"] as? String ?? ""
let adress = data["adress"] as? String ?? ""
let to_adress = data["to_adress"] as? String ?? ""
let tel = data["tel"] as? Int ?? 0
return delivResum(when: when, from: from, to: to, whath: whath, name: name, adress: adress, to_adress: to_adress, tel: tel)
}
}
}
}
这可能是一个愚蠢的问题,但我真的不明白如何只获取电话号码,例如在 PrintSpecificData.swift 中
感谢您的宝贵帮助
【问题讨论】:
标签: ios swift database firebase swiftui