abrufen Wie der Titel sagt habe ich ein seltsames Problem, um einfache Daten von Firebase abrufen, aber ich kann wirklich nicht herausfinden, wo ich falsch liegen würde.Kann nicht Daten von Firebase mit Swift
Das ist mein Schema:
Und der Code:
import Firebase
let DB_BASE = Database.database().reference()
class FirebaseService {
static let instance = FirebaseService()
private var REF_BASE = DB_BASE
private var REF_SERVICE_STATUS = DB_BASE.child("Service_Status")
struct ServiceStatus {
var downloadStatus: Bool
var uploadStatus: Bool
}
func getServiceStatus() -> (ServiceStatus?) {
var serviceStatus: ServiceStatus?
REF_SERVICE_STATUS.observeSingleEvent(of: .value) { (requestSnapshot) in
if let unwrapped = requestSnapshot.children.allObjects as? [DataSnapshot] {
for status in unwrapped {
serviceStatus.downloadStatus = status.childSnapshot(forPath: "Download_Status").value as! Bool
serviceStatus.uploadStatus = status.childSnapshot(forPath: "Upload_Status").value as! Bool
}
// THANKS TO JAY FOR CORRECTION
return sponsorStatus
}
}
}
}
aber am Ende serviceStatus ist gleich Null. Irgendein Rat?
Der * Return * nicht richtig verwendet wird. In diesem Fall wird die Rückmeldung ausgeführt, bevor der Code in der Firebase-Funktion Daten vom Server zurückgibt. Firebase ist asynchron und Sie müssen daher als solche codieren. Siehe [Aktion nach Download] (https://stackoverflow.com/questions/43027817/how-to-perform-an-action-only-after-data-are-downloaded-from-firebase/43029121#43029121) und [Firebase async Aufgabe] (https://stackoverflow.com/questions/38550634/swift-firebase-return-in-asynchron-task/38551937#38551937) – Jay
@Jay Danke, das habe ich korrigiert, aber das Problem ist, dass serviveStatus eigentlich Null ist ! Mache ich etwas falsch, um Daten abzurufen? – user3582537