Hallo Gruppe,
ich beschäftige mich seit ein paar Tagen und Wochen mit Swift. Ich habe Tutorials geübt und auch im Playground mit ausgetobt. Nun sitze ich an einer kleinen App die Werte von einer Datenbank (Firebase) holt. Nun habe ich eine Funktion in einem extra View die mit einen verglichenen Wert in eine Variable schreiben soll. Innerhalb der For-Schleife über die Einträge bekomme ich den Wert angezeigt. Außerhalb ist meine Variable leer. Leider komme ich nicht ganz zurecht warum das nicht funktioniert. Versuchte es auch mit einem String return. Aber dieser ist immer leer. Vielleicht kann mir jemand erklären woran ich mich gerade gedanklich aufhänge. Hier die Schnippsel Code. Ich habe die print methode kommentiert wo ich einen richtigen wert bekomme und wo nicht. Ich hab es mit rückgabewerte versucht aber bekomme immer ein nil. Innerhalb der for schleife funktioniert der rückgabewert richtig.
Woran scheitert mein Gehirn gerade das ich den Fehler nicht verstehen
Alles anzeigen
ich beschäftige mich seit ein paar Tagen und Wochen mit Swift. Ich habe Tutorials geübt und auch im Playground mit ausgetobt. Nun sitze ich an einer kleinen App die Werte von einer Datenbank (Firebase) holt. Nun habe ich eine Funktion in einem extra View die mit einen verglichenen Wert in eine Variable schreiben soll. Innerhalb der For-Schleife über die Einträge bekomme ich den Wert angezeigt. Außerhalb ist meine Variable leer. Leider komme ich nicht ganz zurecht warum das nicht funktioniert. Versuchte es auch mit einem String return. Aber dieser ist immer leer. Vielleicht kann mir jemand erklären woran ich mich gerade gedanklich aufhänge. Hier die Schnippsel Code. Ich habe die print methode kommentiert wo ich einen richtigen wert bekomme und wo nicht. Ich hab es mit rückgabewerte versucht aber bekomme immer ein nil. Innerhalb der for schleife funktioniert der rückgabewert richtig.
Woran scheitert mein Gehirn gerade das ich den Fehler nicht verstehen
C-Quellcode: Func getTimestampFromDatabase
- Schleife aus einer func:
- for i in stride(from: iLast, to: iFirst, by: +1) {
- getTimestampFromDatabase(with: livingRoom[i].timestampKey)
- let value = ChartDataEntry(x: Double(i), y: Double(livingRoom[i].temperature)!)
- lineChartTemperatureEntry.append(value)
- }
- func getTimestampFromDatabase(with key: String) {
- var databaseQuery: DatabaseQuery!
- databaseQuery = FirebaseHelper.sensorLivingRoomReference.child("timestamp")
- databaseQuery.observe(.value) { (snapshot) in
- if let timestampEntries = snapshot.children.allObjects as? [DataSnapshot] {
- for timestampEntry in timestampEntries {
- if key == timestampEntry.key {
- self.timeString = self.setLastValueTimeDateFromDatabase(with: timestampEntry.value as! Int)
- //print(self.timeString) -> GIBT MIR EINEN RICHTIGEN WERT IN DER KONSOLE ZURÜCK
- } else {
- //print("Keine Übereinstimmung")
- }
- }
- }
- print(self.timeString) //-> GIBT MIR EINEN RICHTIGEN WERT IN DER KONSOLE ZURÜCK
- }
- //print(self.timeString) -> GIBT MIR nil AUF DER KONSOLE AUS
- //print(timeString) -> GIBT MIR nil AUF DER KONSOLE AUS
- }