2016-11-24 29 views
1

currentUserがフォローしているすべてのユーザーの投稿を表示するウォール/タイムラインを作成しようとしています。 currentUserのユーザーはすべてUsers -> UserID -> Followingで表示されます。フォロワーの1人が投稿をしているときはいつも、feed-itemsの下にautoIDで追加されます - キー(autoID)はcurrentUserUsers -> UserID -> Wallに同時に追加されます。 enter image description here現在のユーザーからの投稿を表示 - Firebase/Swift

あなたが見ることができるように、このユーザーのフォロワーの一つがポスト(全体のポストはfeed-itemsの下に保存されます)とAUTOIDをしたWallの下で:ここで

は私のFirebaseデータベースから例の画像ですその投稿のユーザーの壁にそれを作った。

currentUserのWallの下に保存されているautoIDに基づいて、feed-itemsにすべての投稿を表示する方法を解明しようとしています。

は、私は、次のコードを試してみましたが、何も示していないと、それは、この行print(self.updates.count)に到達したとき、私は右推測していた場合には、このようなものであるフィードアイテムのために、あなたの構造を0

func startObersvingDB(userID: String) { 

     FIRDatabase.database().reference().child("Users").child(userID).child("Wall").observeEventType(.ChildAdded, withBlock: { snapshot in 

      if let posts = snapshot.value!["Post"] as? String { 
       self.postArray.append(posts) 


       for i in 0..<self.postArray.count { 

        let post = self.postArray[i] 

        print(post) 
        FIRDatabase.database().reference().child("feed-items").queryEqualToValue(post).observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in 
         var newUpdates = [Sweet]() 


         for update in snapshot.children { 
          let updateObject = Sweet(snapshot: update as! FIRDataSnapshot) 
          newUpdates.append(updateObject) 

         } 

         self.updates = newUpdates.reverse() 
         print(self.updates.count) 
         self.tableView.reloadData() 


        }) { (error: NSError) in 
         print(error.description) 
        } 
       } 

      } 
     }) 

    } 

答えて

1

を印刷しています。これは、その後、使用後の代わり.queryEqualToValue(post).child(post)のためのデータを取得する場合であれば

feed-items 
    -UniquePostID 
     -Post Data (key-value pair(s)) 

。また、これはDataSnapshotをシングル投稿に返信するので、Sweetオブジェクトを直接作成し、既存のupdates配列に追加することができます。

もう1つ新しい投稿が追加されるたびにpostArray全体を繰り返す必要はないと思います。新しい投稿のみのデータを取得する必要があります。

これが役立ちますように!

関連する問題