2016-08-22 14 views
0

私は間違っているのか分かりません! Firebaseデータベースからデータを取り出し、各結果を繰り返して配列に格納するだけです。私はservalの異なるアプローチを試みました。しかし、それらはすべて結果を配列に一度に1つずつ追加します。SwiftのアレイにFirebaseデータを追加してください

["1"] 
["1","2"] 
["1","2","3"] 
["1","2","3","4"] 

このように、配列が繰り返されるたびに1つのオブジェクトが追加されます。

let ref = FIRDatabase.database().reference().child("users") 
ref.observeEventType(.ChildAdded, withBlock: { snapshot in 
    userUrl = snapshot.value?["profile_image_1"] as! String 
    imageArray.insert(userUrl, atIndex: 0) 
}, withCancelBlock: { error in 
    print(error.description) 
}) 

と私はこれも試してみました:ここに は、私が持っているもので、私はちょうど私が完了の外で、一度にデータにアクセスすることができる配列にそれぞれの結果を載せていきたいと思います

let userUrl = (snapshot.value.objectForKey("profile_image_1")) as! String 
imageArray.append(userUrl) 

をブロック。

["1","2","3","4"] 

データベース: Firebase Database Structure

答えて

0

このような何か試してみてください:

var imageArray = [] 

func appendData(){ 
    let ref = FIRDatabase.database().reference().child("users") 

    ref.observeEventType(.Value, withBlock: { snapshot in 
     var tempImageArray = [] 

     for user in snapshot.children { 
      userUrl = user.value?["profile_image_1"] as? String 
      self.imageArray.insert(userUrl, atIndex: 0) 
      tempImageArray.append(broadcastItem) 
     } 

     self.imageArray = tempImageArray 
    }) 
} 

が編集:私は、コードを更新し、これを試してみてください。

+0

これは私が得るものです:致命的なエラー:予期せず、オプションの値をアンラッピングしている間にnilが見つかりました 'let userUrl = snapshot.value?[" profile_image_1 "] as! String' – Barrett

+0

データベース構造のスクリーンショットをFirebaseに追加できますか?このエラーは、 "profile_image_1"が文字列を返さないようですが、構造によっては簡単に修正できます。 –

+0

私の質問に自分のデータベースのイメージを追加しました。 – Barrett

0

これは直接質問には答えませんが、私は、すべてが追加された後に最終データにアクセスしたいと仮定しています。

私は同じ問題を抱えていましたが、私はあなたが完了したブロック内にdispatchQueueを作成したのと同じことをやっていました。

​​

これが役立ちます。

+0

このコードは、Firebaseからの単一の観測によってトリガされるobserveブロック内の配列にまだアクセスしているので機能しません。 –

関連する問題