2016-12-01 7 views
0

Wie erreiche ich "Benutzer" außerhalb der Schließung?Zugriff auf Daten außerhalb von Closure // iOS Swift

let currentUser = FIRDatabase.database().reference(withPath: "users").child((FIRAuth.auth()!.currentUser?.uid)!) 
     currentUser.observeSingleEvent(of: FIRDataEventType.value, with: { snapshot in 
     let value = snapshot.value as? NSDictionary 
     let name = value?["name"] as? String 
     let age = value?["age"] as? String 
     let user = UserStruct.init(name: name, age: age) 
    }) 

Alles ist in Firebase richtig und die Daten sind da und es ist nicht Null. Aber ich brauche wie so „user“ außerhalb des Verschlusses zu verweisen:

print(user.name) 
print(user.age) 
+0

Sie benötigen Benutzer außerhalb des Bereichs des Verschlusses entweder zu definieren, und es in der Schließung bevölkern, dann auf die Schließung warten, bevor Sie Benutzer zu beenden, oder Sie können einen Abschluss Handler – Alexander

+0

verwenden Was tun erkläre ich Benutzer wie außerhalb des Umfangs, da es ein Struct aufnimmt? Ein Wörterbuch? Ich habe versucht, mit dem Abschluss-Handler, aber ich nicht wo ich es platzieren soll. – Manny

+0

na 'User' ist ein' UserStruct', also deklariere es als das. – Alexander

Antwort

0

Deklarieren Sie die user Variable außerhalb des Verschlusses und es dann den self Modifier zuzugreifen.

var user: UserStruct 
    let currentUser = FIRDatabase.database().reference(withPath: "users").child((FIRAuth.auth()!.currentUser?.uid)!) 
     currentUser.observeSingleEvent(of: FIRDataEventType.value, with: { snapshot in 
     let value = snapshot.value as? NSDictionary 
     let name = value?["name"] as? String 
     let age = value?["age"] as? String 
     self.user = UserStruct.init(name: name, age: age) 
    }) 
+0

Ich bekomme diesen Fehler, Klasse 'ViewController' hat keine Initialisierer – Manny

+0

es lief dabei, var Benutzer: UserStruct !, aber ich bekomme einen optionalen Wert immer noch in viewDidLoad – Manny

+0

Bitte poste den Code, auf den du dich beziehst und in welcher Zeile der Fehler auftritt. – Bek

Verwandte Themen