Мне нужно создать список SwiftUI, используя отдельную строку из базы данных Firebase Realtime. Используя .observeSingleEvent
, я успешно получил строку из базы данных, разделил ее и поместил в массив String
. В настоящее время единственная проблема заключается в том, что я не могу заставить массив правильно принимать отдельное значение массива String
, поскольку асинхронные данные c из Firebase не загружаются вовремя, чтобы представление подтвердило его. С какими ошибками я сталкиваюсь?
Спасибо.
@State var syList: [String] = ["1", "2", "3"]
func observeSymptomList(completion: @escaping ([String]) -> Void) {
var symptomsArray: [String] = [""]
let ref = Database.database().reference().child("symptoms")
ref.observeSingleEvent(of: .value, with: { (snapshot) in
if let value = snapshot.value as? String {
print(value)
symptomsArray = value.components(separatedBy: ", ")
print(symptomsArray)
}
else { completion(["error"]) }
}) { (error) in
print(error.localizedDescription)}
print(symptomsArray)
completion(symptomsArray)
}
var body: some View {
VStack {
List {
Section(header: ListHeader()) {
ForEach(syList, id: \.self) {sy in
Text(sy)
}
}
}.onAppear {
self.observeSymptomList { (name) in
self.syList = name
}
}
.listStyle(GroupedListStyle())
}
.navigationBarTitle("Stil de viață")
.navigationBarBackButtonHidden(true)
}