gpt4 book ai didi

swift - 访问唯一 AutoID 内的 Firebase 数据

转载 作者:行者123 更新时间:2023-11-30 11:53:55 26 4
gpt4 key购买 nike

这是我的第一个问题,我仍在学习 Swift/Xcode/Firebase,所以非常感谢您的耐心等待。我一直在跟踪 StackOverflow,并找到了很多可以帮助解决各种问题的答案,但对于我这两天一直在努力解决的问题没有任何意义。

我正在编写一个程序,它将在先前的 View Controller 上选取的日期和一组用户输入的 float 从文本字段保存到 Firebase 数据库,并将每个数据集作为单独的条目附加,而不是覆盖以前的数据。使用下面的第一段代码,我已经解决了这个问题,只是我无法找到不使用 AutoID 的方法来做到这一点。这让我在 Firebase 中得到了这样的设置,但每个类别中有多个类别和“optionSelected”部分:

  • 程序名称
    • 类别 1
      • 选项已选择
        • L1cggMnqFqaJf1a7UOv
          • 日期:“2017 年 12 月 21 日”
          • 变量 1 float :“12345”
          • 变量 2 float :“26.51”
        • L1ciVpLq1yXm5khimQC
          • 日期:“2017 年 12 月 30 日”
          • 变量 1 float :“23456”
          • 变量 2 float :“35.88”

用于保存的代码:

func newWithNewVars() {

let myDatabase = Database.database().reference().child("Category 1").child(optionSelected)
let variable1 = textField1.text
let variable2 = textField2.text
let variable1Float = (textField1.text! as NSString).floatValue
let variable2Float = (textField2.text! as NSString).floatValue
let writeArray = ["Date": textPassedOverDate, "Variable 1 Float": variable1Float, "Variable 2 Float": variable2Float]

myDatabase.childByAutoId().setValue(gasArray) {
(error, reference) in
if error != nil {
print(error!)
}
else {
print("Message saved successfully!")
}
}
}

问题在于调用数据。由于 AutoID 是唯一的,我无法弄清楚如何访问更深层的数据进行计算。具体来说,我希望能够创建一个新条目,按保存数据按钮,并让它在“optionSelected”部分中找到最新条目,以便它可以进行计算,例如从新变量 1 中减去旧变量 1 并这样。

鉴于上述描述、布局和上面使用的代码,什么样的代码结构可以让我找到最近的日期并访问 AutoID 部分内特定类别和“optionSelected”的数据?

感谢您的帮助。

最佳答案

您遇到的问题是您试图深入挖掘,但无法进行,因为您没有掌握该 ID。当您想要进入 JSON 树中的列表且无法获取要进入的 id 时,您需要在引用观察中使用 .childAdded - 这将被调用的次数与 类别 1 树中的值相同:

let reference = Database.database().reference()
reference.child("Category 1").child("optionSelected").observe(.childAdded, with: { (snapshot) in

let uniqueKey = snapshot.key // IF YOU WANT ACCESS TO THAT UNIQUE ID
print(uniqueKey)

guard let dictionary = snapshot.value as? [String: AnyObject] else { return }

let date = dictionary["date"] as? String
let variableOne = dictionary["Variable 1 Float"] as? Float
let variableOne = dictionary["Variable 2 Float"] as? Float

}, withCancel: nil)

您可能还希望避免在数据库键中使用空格,以避免在不久的将来出现任何问题。我会坚持常见的小写下划线做法,例如“category_1”或“variable_2_float”

关于swift - 访问唯一 AutoID 内的 Firebase 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48037473/

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