Я новичок в Swift. В настоящее время я изучаю модуль структуры.
Меня попросили создать оценку, которая увеличивается на 1 балл каждый раз, когда пользователь получает правильный ответ, но моя оценка в конечном итоге увеличивается на 2. Я так сбита с толку. В остальном все нормально. Кто-нибудь может мне помочь?
Мой код ниже:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var questionLable: UILabel!
@IBOutlet weak var progressBar: UIProgressView!
@IBOutlet weak var trueButton: UIButton!
@IBOutlet weak var falseButton: UIButton!
@IBOutlet weak var scoreLabel: UILabel!
var quizBrain = QuizBrain()
override func viewDidLoad() {
super.viewDidLoad()
progressBar.progress = 0
updatedUI()
}
@IBAction func answerButtonPressed(_ sender: UIButton) {
let userAnswer = sender.currentTitle!
let userGotItRight = quizBrain.checkAnswer(userAnswer)
print(quizBrain.checkAnswer(userAnswer))
if userGotItRight{
UIView.animate(withDuration: 0.2) {
sender.backgroundColor = #colorLiteral(red: 0.4745098054, green: 0.8392156959, blue: 0.9764705896, alpha: 1)
}
UIView.animate(withDuration: 0.2) {
sender.backgroundColor = UIColor.clear
}
}else{
UIView.animate(withDuration: 0.2) {
sender.backgroundColor = #colorLiteral(red: 0.9098039269, green: 0.4784313738, blue: 0.6431372762, alpha: 1)
}
UIView.animate(withDuration: 0.2) {
sender.backgroundColor = UIColor.clear
}
}
quizBrain.nextQuestion()
updatedUI()
}
func updatedUI() {
questionLable.text = quizBrain.getQuestionText()
scoreLabel.text = "Score:\(quizBrain.getScore())"
progressBar.progress = quizBrain.getProgress()
}
}
Следующая часть - Модель:
import Foundation
struct QuizBrain {
let quiz = [
Question(q: "A slug's blood is green.", a: "True"),
Question(q: "Approximately one quarter of human bones are in the feet.", a: "True"),
Question(q: "The total surface area of two human lungs is approximately 70 square metres.", a: "True"),
Question(q: "Chocolate affects a dog's heart and nervous system; a few ounces are enough to kill a small dog.", a: "True")
]
var questionNumber = 0
var score = 0
mutating func checkAnswer(_ userAnswer: String) -> Bool {
if userAnswer == quiz[questionNumber].answer{
score += 1
return true
}else{
return false
}
}
mutating func getScore() -> Int {
return score
}
func getQuestionText() -> String {
return quiz[questionNumber].text
}
func getProgress() -> Float {
let progress = Float(questionNumber + 1)/Float(quiz.count)
return progress
}
mutating func nextQuestion(){
if questionNumber + 1 < quiz.count{
questionNumber += 1
}else {
questionNumber = 0
score = 0
}
}
}