首页 > 解决方案 > 防止重新加载报告的评论

问题描述

我想防止在我的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
    }
}

我该如何实现这个功能?

标签: iosswiftfirebasefirebase-realtime-database

解决方案


removedIDs.contain(aComment){ 需要Equatable一致性

  class Comment : Equatable {
    static func == (lhs: Comment, rhs: Comment) -> Bool {
        return lhs.id == rhs.id
    }
    var id:Int!
}

推荐阅读