ios - 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("")
}
}
}
解决方案
您应该查看此文档中显示的 fieldValue 增量。
你可以实现这样的东西,从文档中提取;
func incrementCounter(ref: DocumentReference) {
let docRef = ref.collection("XXXX").document("XXXX")
docRef.updateData([
"count": FieldValue.increment(Int64(1))
])
}
推荐阅读
- c# - 程序试图加载 cs.html 文件,给出 404
- reactjs - Reactjs+Flow:SyntheticKeyboardEvent 并将函数作为道具传递
- java - 使用真实手机时无法获取我的当前位置
- javascript - 为什么我删除静音后自动播放停止工作?
- javascript - 悬停时可以将元素带到另一个兄弟元素吗?[CSS动画]
- javascript - 当我在循环中使用 jquery replaceWith() 时,元素会被丢弃
- python - PyQt 在启动时运行按钮功能
- symfony - 将 null 传递给字符串字段时,API 平台返回类型错误而不是验证错误
- javascript - React-native - 在组件之间传递值
- c# - 具有特定类型的列表上的 C# 扩展方法