首页 > 解决方案 > Swift 投票系统递增和递减 2 而不是 1

问题描述

我有一个在我的应用程序中实现的投票系统。当用户赞成或反对时,增量工作正常,但是当他们决定改变他们的投票时。一个是增加 1,而另一个是减少 1。但是我注意到,当用户更改投票时,它在任一侧增加 2,而不是增加 1。我猜要么运行两次导致这种情况发生,但我不知道我的代码在哪里发生了这种情况。我在下面发布了我的代码,用户决定改变他们的投票。

//User wants to change vote
   else {
        
        // UpVote button
        switch buttonVote {
        case 1 :
            
            if userVotedUP == true {
                //Do nothing
                print("User already voted up")
            }
            else if userVotedUP == false {
                
                //change vote from dislike to like
                self.VoteUpCount  += 1
                self.VoteDownCount -= 1
                
                
                //Reset flags
                self.userVotedUP = true
                self.userVotedDown = false
                
                //Write multiple votes to Firebase
                ref.updateChildValues(["\(atmkind)/\(uid)/votesUpCount": self.VoteUpCount,
                                       "\(atmkind)/\(uid)/votesDownCount": self.VoteDownCount])
                
            }
            
            //DownVote Button
            case -1 :
            
            if userVotedDown == true {
                //Do nothing
                print("User already voted up")
            }
            else if userVotedDown == false {
                
                //change vote from like to dislike
                self.VoteUpCount  -= 1
                self.VoteDownCount += 1
                
                //Reset flags
                self.userVotedUP = false
                self.userVotedDown = true
                
                //Write multiple votes to Firebase
                ref.updateChildValues(["\(atmkind)/\(uid)/votesUpCount": self.VoteUpCount,
                                       "\(atmkind)/\(uid)/votesDownCount": self.VoteDownCount])
                
            }
        default:
            print("")
        }
    }
}

标签: iosswiftfirebasefirebase-realtime-database

解决方案


您应该查看此文档中显示的 fieldValue 增量。

你可以实现这样的东西,从文档中提取;

func incrementCounter(ref: DocumentReference) {

    let docRef = ref.collection("XXXX").document("XXXX")

    docRef.updateData([
        "count": FieldValue.increment(Int64(1))
    ])
}

推荐阅读