gpt4 book ai didi

ios - 使用 swift 添加多个文本字段到 firebase

转载 作者:行者123 更新时间:2023-11-30 12:39:25 25 4
gpt4 key购买 nike

我的 View Controller 的图像:

1

这是我的代码

class AddViewController: UIViewController {

@IBOutlet weak var questionField: UITextField!
@IBOutlet weak var correctAnswer: UITextField!
@IBOutlet weak var optionA: UITextField!
@IBOutlet weak var optionB: UITextField!


var ref: FIRDatabaseReference?


override func viewDidLoad() {
super.viewDidLoad()
self.hideKeyboard()
}

@IBAction func createQuestion(_ sender: Any) {

ref = FIRDatabase.database().reference(fromURL: "https://******.firebaseio.com/")
if questionField.text != "" && correctAnswer.text != "" && optionA.text != "" && optionB.text != ""
{
self.ref?.child("Questions").setValue(["Question": questionField.text, "CorrectAnswer": correctAnswer.text, "OptionA": optionA.text, "OptionB": optionB.text])
questionField.text = ""
correctAnswer.text = ""
optionA.text = ""
optionB.text = ""
}
else
{
print("Missing fields")
}

}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

这是我在 Firebase JSON 中的目标:

2

我的代码可以工作,但它取代了(ofc)。我保存问题以便检索问题的方法是否正确?您能告诉我如何保存我的问题吗?

最佳答案

首先,如果您要创建这样的数据库引用,您必须使用相当旧版本的 Firebase。一段时间以来(将近 6 个月?)创建数据库引用的正确方法是

var ref: FIRDatabaseReference!

override func viewDidLoad(){
super.viewDidLoad()
ref = FIRDatabase.database().reference()
}

为了使其正常工作,您必须下载 Firebase 项目的 GoogleService-info.plist 文件并将其添加到您的 Xcode 项目中。

<小时/>

就您的数据库结构而言...

您的代码中的内容不会产生上图中您想要的结果。你的代码中的内容将产生这个...... JSON based on your current code

为了生成按照上图所示的方式构建的数据,您需要执行以下操作...

ref.child("Questions").child("Question1").setValue(["Question":questionField.text, "CorrectAnswer": correctAnswer.text, "optionA": optionA.text, "optionB": optionB.text])

然后问题 2...

ref.child("Questions").child("Question2").setValue(["Question":questionField.text, "CorrectAnswer": correctAnswer.text, "optionA": optionA.text, "optionB": optionB.text])

然后你的 JSON 将如下所示...... newly structured JSON

请注意,我必须将“Question”键添加为“Question1”节点下的子值,才能将该问题的文本设置为其值。

此外,如果您无法先递增 Question1,然后递增 Question2...等等,那么您可以对每个问题使用 Firebase 的方法 .childByAutoId,Firebase 会自动生成一个唯一的该节点的子 ID...

ref.child("Questions").childByAutoId().setValue(["Question":questionField.text, "CorrectAnswer": correctAnswer.text, "optionA": optionA.text, "optionB": optionB.text])

结果看起来与此类似...... JSON using .childByAutoId

希望这对您有帮助,如果您还有其他问题,请告诉我

关于ios - 使用 swift 添加多个文本字段到 firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42421817/

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