Swift 投票系统递增和递减 2 而不是 1

Posted

技术标签:

【中文标题】Swift 投票系统递增和递减 2 而不是 1【英文标题】:Swift voting system incrementing and decrementing by 2 instead of 1 【发布时间】:2020-11-17 12:41:34 【问题描述】:

我在我的应用中实现了一个投票系统。当用户赞成或反对时,增量工作正常,但是当他们决定改变他们的投票时。一个是增加 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("")
        
    

【问题讨论】:

你为什么删除你的old question只是为了再次发布几乎相同的帖子? @JoakimDanielson 我解决了另一个问题的一部分,这个问题专注于一件事?我应该怎么做? 好的,但是它们发布得太近了,我看不出您是如何有时间正确调查那段时间的变化的。无论如何,这个问题与前一个问题相同,不可能知道问题中发布到您使用的所有类属性的代码之外会发生什么。 @JoakimDanielson 我仔细查看了我的代码,我提出了一个问题,但我仍然尝试自己解决这个问题,我做到了。事实证明,我必须删除 VotersUpCount 增量之一,它完全按照我想要的方式工作。谢谢您的帮助!非常感谢! 【参考方案1】:

您应该查看doc 中显示的 fieldValue 增量。

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

func incrementCounter(ref: DocumentReference) 

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

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

【讨论】:

以上是关于Swift 投票系统递增和递减 2 而不是 1的主要内容,如果未能解决你的问题,请参考以下文章

从输入类型号递增而不是递减值

帮忙用java做个投票系统,发到我邮箱

网站投票系统

java投票排名实现

Swift 如何为使用 Firebase 投票的用户添加 5 星评分

基于php116旅游在线人物投票系统