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的主要内容,如果未能解决你的问题,请参考以下文章