2017-12-15 1 views
-1

Ich möchte Daten von Firebase abrufen. Ich wurde eine Struktur für Benutzer erstellt. aber ich bin immer Fehler in Init-Methodebeim Erstellen von Benutzerobjekt für Firebase-Datenbank Typ 'Any' hat keine tiefgestellten Mitglieder

Typ ‚Alle‘ hat keine Index Mitglieder

struct userObj { 
    var address:String! 
    var name: String! 
    var userId: String! 
    var ref: DatabaseReference? 
    var key: String! 

    init(snapshot: DataSnapshot) { 
     key = snapshot.key 
     name = snapshot.value!["name"] as! String // this line give error 
     address = snapshot.value!["address"] as! String // this line give error 
     userId = snapshot.value!["userId"] as! String // this line give error 
     ref = snapshot.ref 
    } 
} 
+0

Sicher snapshot.value! ["Name"] ist kein gültiger Typ. Versuchen Sie, den richtigen Typ anzugeben. –

+0

Name ist Zeichenfolge Format. Also, was ist das Problem hier ?? –

Antwort

1

DataSnapshot.value Eigenschaft wird als var value: Any? { get } erklärt

Es ist nicht explizit als Wörterbuchtyp deklariert, aber es kann Wörterbuch unter anderen möglichen Typen enthalten

  • NSDictionary
  • NSArray
  • NSNumber (auch booleans enthält)
  • NSString

Bevor Sie Wörterbuch zugreifen können (wenn Sie wissen, dass es eine gibt) Sie es typisieren haben, um die tatsächliche Wörterbuch bekommen Sie können Verwendung:

snapshot.value as? [String : AnyObject] 

Bitte beachten Sie das ausdrücklich optionals mit ! Abwickeln wird abstürzen, wenn es keine entsprechenden Daten geeigneter Typ ist.

Verwandte Themen