ios - 防止重新加载报告的评论
问题描述
我想防止在我的commentsTable 中重新加载已报告的评论。所以我做了一个removedIDs表:
var removedIDs = [Comment]()
我也有
var comments = [Comment] ()
然后我想在您报告评论时将其添加到列表中,因此:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let more = UITableViewRowAction(style: .default, title: "Report") { action, index in self.comments.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade) }; more.backgroundColor = UIColor.blue; self.removedIDs.append(comments[indexPath.row]); return [more]
}
然后我想在加载评论时我可以:
func loadComments(forPostId: String) {
let ref = self.ref.child("comments")
let thisPostRef = ref.child(forPostId)
thisPostRef.observeSingleEvent(of: .value, with: { snapshot in
let allComments = snapshot.children.allObjects as! [DataSnapshot]
for commentSnap in allComments {
let commenterUid = commentSnap.childSnapshot(forPath: "comment_by_uid").value as? String ?? "No uid"
let commentText = commentSnap.childSnapshot(forPath: "comment_text").value as? String ?? "No comment"
let aComment = Comment(id: commenterUid, text: commentText)
if removedIDs.contains(aComment){
print("skipped")
}
else {
self.comments.append(aComment)
print(commenterUid, commentText)
}
}
self.commentsTable.reloadData()
})
}
但我得到了错误
参数类型 'Comment' 不符合预期的类型 'Equatable'
上线:removedIDs.contain(aComment){
请注意,我的评论模型如下:
import Foundation
类评论{
var id:String
var text:String
init(id: String, text:String) {
self.id = id
self.text = text
}
static func parseComment(_ key:String, data:[String:Any]) -> Comment? {
if let text = data["text"] as? String{
return Comment(id: key, text: text)
}
return nil
}
}
我该如何实现这个功能?
解决方案
这removedIDs.contain(aComment){
需要Equatable
一致性
class Comment : Equatable {
static func == (lhs: Comment, rhs: Comment) -> Bool {
return lhs.id == rhs.id
}
var id:Int!
}
推荐阅读
- java - Kafka在java中将hashmap序列化为json
- r - 0.5<0.5 在 R 中返回 TRUE?
- python - 如何将多处理与 GUI 和后端类一起使用?
- javascript - 当元素由脚本动态生成并通过类选择器访问时,如何在Jquery中调用click事件的函数?
- python - 在 jupyter notebook 中使用 4.4.1 版本进行 plotly 升级
- java - 改造响应正文为空,但状态码为 200
- mysql - 如何使用 helm 3.0 安装 mysql ha
- android - 在无头模式下获取本地化字符串
- python - 根据python中pandas数据框的多列条件选择值
- bash - 使用 wget 将 bash 别名从存储库添加到远程服务器