2017-03-26 22 views
0

Firebaseから辞書の配列を取得しようとしていますが、ローカルイコライズに渡しますが、その他のエラーが発生します。辞書の配列をFirebaseからローカル配列に渡す

私は構造体の例の下にあります。場所のタイプ辞書

var allPlaces:[Places] = [] 

そして、ここでの

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 
} 

そしてローカル配列は、私のコードスニペットは、私が「持っているの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) 

       } 
     } 

でありますself.allPlaces.append(localPlace)行でオプション値をアンラッピングしている間に予期せずnilが見つかりました。私は上記の例で何が欠けていますか、誰かがアイデアを持っていますか?

答えて

0

ほとんど変更を加えずに上記のコードを修正しました。

構造体が

のViewController

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

       self.allPlaces = plc 
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 
} 

そして、コードスニペット以下のようにする必要があります場所

関連する問題