質問: message } self.Posts.append(self.Post) } self.tableView.reloadData() } } } ```
回答: > > ・新たな階層が作られない > > ・すでに作られている階層に代入される > > > printすれば分かると思いますが、childNumberが更新されていません。 viewDidLoadのときしかchildNumberが更新されていないので、ずっと0のkeyで書き込みをしています。 childNumberにdidsetとかを書いてみて値の動きを見守ってみると分かりやすいかと思います。 今回の場合、Firebaseからデータをフェッチしてソースを更新したあと、self.childNumber = self.Posts.countすればいいと思います。 少し質問と少しそれますが、キーをchildByAutoIdにして、queryOrderedByKeyすれば時間順にになると思います(childByAutoId によって生成される一意のキーはタイムスタンプに基づいている)。 将来的に時間を表示したり・管理することも考慮するなら、そもそもValueの中にmessage/usernameの他にDateのタイムスタンプをIntとかで保存しておくと良いかと思います。その場合は、queryOrderedByChildでそのタイムスタンプで並び替えることもできます。 あと、現状メッセージを追加するたび全件取得して差し替えていますが、最初だけSingleEventで取得して、それ以降はobserve(.childAdded)で追加分だけAppendしていくといいと思います。 公式のリファレンスを見ながら色々試してみてください。