gpt4 book ai didi

swift - 为什么我不在我的 firebase 数据库中的特定位置检索值并且只得到 nil?

转载 作者:行者123 更新时间:2023-11-28 06:10:16 25 4
gpt4 key购买 nike

我正在尝试制作一种轮询代码,一旦有人按下一个选项,Firebase 数据库中的值就会更新一个,但该人无法再次访问它。

现在,我只想测试一个按钮。作为引用,我的数据库是:

“为保护隐私而编辑”
-> “主要内容”
->-> “投票”
->->-> “枪支控制”
->->->-> “背景调查”
->->->->-> 选项A:0
->->->->-> 选项B:0
->->->->-> 选项C:0
->->->->-> 选项D:0

很遗憾,我没有足够的积分来展示图片,所以请耐心等待。

我的代码是:

var counterRef = Database.database().reference()
var optionA: Int = 0
var retrieveData: Int = 0
static var pollAnswered: Bool = false


@IBAction func optionA(_ sender: Any) {
print("Called")
self.counterRef = Database.database().reference(fromURL: "URL Redacted For Privacy")
print("Called2")
updateOptionADos()
}


override func viewDidLoad() {
super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

func updateOptionADos() {

print("Called3")

counterRef.observeSingleEvent(of: .value, with: { snapshot in
let valString = snapshot.value as? String
if (valString != nil && PollViewController.pollAnswered == false){
var value = Int(valString!)
value = value! + 1
self.retrieveData = value!
self.optionA = value!
print(self.optionA)
self.counterRef.setValue("\(String(describing: value))")
PollViewController.pollAnswered = true
print("Noice")
}
else {
print("ya done f***** up")
}
})
}

应该调用 updateOptionADos() 来确定我尝试访问的位置 (OptionA) 中的值是什么,并向其加 1,同时将更新后的值存储在变量 optionA 中以供以后在统计中使用。它构建完美,但我不断收到“ya done f***** up”这告诉我数据库值没有为 valString 存储。有人请帮我解决这个问题。我做错了什么?我很茫然。

最佳答案

您获取值并尝试将其转换为字符串:

let valString = snapshot.value as? String

然后将该字符串转换为 Int:

var value = Int(valString!)

如果您将计数存储为整数而不是字符串,snapshot.value as? String 将返回 nil,因为它不是字符串。

关于swift - 为什么我不在我的 firebase 数据库中的特定位置检索值并且只得到 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46921707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com