Поскольку я вызываю getdata () в функции viewDidLoad, я не могу получить переменную documentdata. Я пытаюсь использовать данные документа для кнопки. Я знаю, что для получения данных мне также нужен тип возврата, но я не могу этого получить. TLDR: я пытаюсь получить значение documentdata в другую совершенно другую функцию. Заранее благодарю всех, кто откликнулся.
import UIKit
import Firebase
import FirebaseFirestore
class QuizViewController: UIViewController {
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var answerButtonTwo: UIButton!
@IBOutlet weak var answerButtonOne: UIButton!
@IBOutlet weak var answerButtonThree: UIButton!
@IBOutlet weak var answerButtonFour: UIButton!
@IBOutlet weak var displayAnswerChoice: UILabel!
var isrun = false
var documentdata:[String:Any] = ["":""]
override func viewDidLoad(){
super.viewDidLoad()
setupElements()
getData()
}
func setupElements(){
answerButtonOne.setTitle("", for:.normal)
answerButtonTwo.setTitle("", for:.normal)
answerButtonThree.setTitle("", for:.normal)
answerButtonFour.setTitle("", for:.normal)
questionLabel.text = ""
displayAnswerChoice.text = ""
}
func getData() {
let db = Firestore.firestore()
db.collection("quizs").document("basketballQuiz").getDocument { (document,error) in
if error == nil{
print("cant get data")
}
if document != nil && document!.exists{
let documentdata = document!.data()
self.questionLabel.text = documentdata?["Question"] as? String
self.answerButtonOne.setTitle(documentdata?["Answer1"] as? String, for:.normal)
self.answerButtonTwo.setTitle(documentdata?["Answer2"] as? String, for:.normal)
self.answerButtonThree.setTitle(documentdata?["Answer3"] as? String, for:.normal)
self.answerButtonFour.setTitle(documentdata?["Answer4"] as? String, for:.normal)
}
}
}
@IBAction func AnswerOneTap(_ sender: Any) {
let rightAnswer:Int = documentdata["correctAnswer"] as! Int
if (rightAnswer == 1){
displayAnswerChoice.text = "Correct"
displayAnswerChoice.backgroundColor = UIColor(named: "Green")
}
}
@IBAction func AnswerTwoTap(_ sender: Any) {
let rightAnswer:Int = documentdata["correctAnswer"] as! Int
if (rightAnswer == 2){
displayAnswerChoice.text = "Correct"
displayAnswerChoice.backgroundColor = UIColor(named: "Green")
}
}
@IBAction func AnswerThreeTap(_ sender: Any) {
let rightAnswer:Int = documentdata["correctAnswer"] as! Int
if (rightAnswer == 3){
displayAnswerChoice.text = "Correct"
displayAnswerChoice.backgroundColor = UIColor(named: "Green")
}
}
@IBAction func AnswerFourTap(_ sender: Any) {
let rightAnswer:Int = documentdata["correctAnswer"] as! Int
if (rightAnswer == 4){
displayAnswerChoice.text = "Correct"
}
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}