2017-03-26 2 views
0

Ich versuche, ein Array von Wörterbüchern von Firebase zu erhalten und an lokalen Ausgleich zu übergeben, aber verschiedene Fehler zu erhalten.Übergeben eines Array von Wörterbuch von Firebase zu lokalen Arrays

Ich habe unten struct Beispiel:

struct Places { 
var type = "" 
var country = "" 
var name = "" 

init(type: String, country: String, name: String, image: String) { 
    self.type = type 
    self.country = country 
    self.name = name 
} 

und lokale Array von Orten Art Wörterbuch

var allPlaces:[Places] = [] 

Und hier ist mein Code-Snippet auf Viewcontroller

   if let firebasePlaces = snapshot.value as? [String:AnyObject]{ 

       var localPlace:Places! 

       for firebasePlace in firebasePlaces{ 

        localPlace?.name = firebasePlace.value["name"] as! String 
        localPlace?.country = firebasePlace.value["country"] as! String 
        localPlace?.type = firebasePlace.value["type"] as! String 
        localPlace?.image = firebasePlace.value["image"] as! String 


        self.allPlaces.append(localPlace) 

       } 
     } 

Ich habe haben " unerwarteterweise wurde nil beim Entpacken eines optionalen Werts "on self.allPlaces.append (localPlace) Zeile gefunden. Was fehlt mir am obigen Beispiel, hat jemand eine Idee?

Antwort

0

Ich habe den obigen Code durch kleine Änderungen behoben.

Die Orte Struktur wie

struct Places { 
var type:String! 
var country:String! 
var name:String! 
var image:String! 

init(type: String, country: String, name: String, image: String) { 
    self.type = type 
    self.country = country 
    self.name = name 
    self.image = image 
} 

init(snapshot: FIRDataSnapshot) { 

    let snapshotValue = snapshot.value as! [String:AnyObject] 

    type = snapshotValue["type"] as! String 
    country = snapshotValue["country"] as! String 
    name = snapshotValue["name"] as! String 
    image = snapshotValue["image"] as! String 
} 

Und Code-Snippet auf Viewcontroller

   var plc: [Places] = [] 
       for eachPlace in (snapshot.children){ 
       let place = Places(snapshot: eachPlace as! FIRDataSnapshot) 
       plc.append(place) 
       } 

       self.allPlaces = plc 
unter

sein sollte
Verwandte Themen