以下はFirebaseからデータを取得する際のコードなのですが、分からない部分があり質問させて貰いました。
func fetchContentsData(){ let ref = Database.database().reference().child("timeLine").queryLimited(toLast: 100).queryOrdered(byChild: "postDate").observe(.value) { (snapShot) in self.contentsArray.removeAll() if let snapShot = snapShot.children.allObjects as? [DataSnapshot]{ for snap in snapShot{ if let postData = snap.value as? [String:Any]{ let userName = postData["userName"] as? String let userProfileImage = postData["userProfileImage"] as? String let contents = postData["contents"] as? String let comment = postData["comment"] as? String var postDate:CLong? if let postedDate = postData["postDate"] as? CLong{ postDate = postedDate } //postDateを時間に変換していきます。 let timeString = self.convertTimeStamp(serverTimeStamp: postDate!) self.contentsArray.append(Contents(userNameString: userName!, profileImageString: userProfileImage!, contentImageString: contents!, commentString:comment!, postDateString: timeString)) } } self.timeLineTableView.reloadData() let indexPath = IndexPath(row: self.contentsArray.count - 1, section: 0) if self.contentsArray.count >= 5{ self.timeLineTableView.scrollToRow(at: indexPath, at: .bottom, animated: true) } } }
具体的にはif let snapShot = snapShot.children.allObjects as? [DataSnapshot]{
こちらの部分の、[DataSnapshot」
の部分なのですが、これは辞書型もしくは配列として扱われているのでしょうか?
と言いますのも以下は実行した際に、breakpointを設定した際のsnapshotの中身なのですが、配列のような形で表示がされておりました。
いまいち、[DataSnapshot」
という部分について、分からなかった為、ご助言いただけましたら幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。