我正在尝试创建一个包含问题和回复的表格视图,但回复嵌套在问题的稍后。
我从firebase调用数据,但不知道如何在表视图中显示该信息。我有2个单元格设置了我想要的外观,但只能填充问题或答案。
我还在学习并且代码是错误的,因为我知道第二部分在返回后不会被调用,但它显示了我的2个单元格,如果我注释掉其中一个,那么它显示另一个没有问题。
任何人都可以为我阐明这一点,或者请我指出正确的方向。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let post = postsQuestion[indexPath.row]
if let cell = tableView.dequeueReusableCell(withIdentifier: "QuestionsCell") as? QuestionsCell {
if let img = MainInfoVC.imageCache.object(forKey: post.userCommentImage as NSString) {
cell.configurePost(post: post, img: (img ))
return cell
}else {
cell.configurePost(post: post)
return cell
}
}else {
return QuestionsCell()
}
let postRs = postsReplys[indexPath.row]
if let cell = tableView.dequeueReusableCell(withIdentifier: "ReplyCell") as? ReplyCell {
if let img = MainInfoVC.imageCache.object(forKey: post.userCommentImage as NSString) {
cell.configureReplyPost(post: postRs, img: (img ))
return cell
}else {
cell.configureReplyPost(post: postRs)
return cell
}
}else {
return QuestionsCell()
}
}
以下是我保存到firebase的数据。
和我调用数据的代码。
let postReg = DataService.ds.REF_POSTS
postReg.child("\(subStr!)").child("question").queryOrdered(byChild: "date").observe(.value, with: { snapshot in
self.postsQuestion = []
if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
for snap in snapshot {
let postDictQ = snap.value as? Dictionary<String, AnyObject>
let keyQ = snap.key
let postQ = Post(postKey: keyQ, postData: postDictQ!)
self.postsQuestion.append(postQ)
}
}
self.postsQuestion.sort(by: {$0.date > $1.date})
self.tableView.reloadData()
})
let postReply = DataService.ds.REF_POSTS.child("\(subStr!)").child("question")
postReply.queryOrdered(byChild: "date").observe(.value, with: { snapshot in
if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
for snap in snapshot {
if snap.hasChild("replies") {
let snapID = snap.key
let refToReply = DataService.ds.REF_POSTS.child("\(subStr!)").child("question").child(snapID).child("replies")
refToReply.queryOrdered(byChild: "date").observe(.value, with: { snapshot in
let postDictR = snap.value as? Dictionary<String, AnyObject>
let keyR = snap.key
let postR = Post(postKey: keyR, postData: postDictR!)
self.posts.append(postR)
print("Tony: Snapshot Reply\(snapshot)")
})
}else {
print("Tony: No Replies")
}
self.posts.sort(by: {$0.date > $1.date})
self.tableView.reloadData()
}
}
})
这就是我希望它在视图中查看的方式。