ios - Swift - 如何让文本字段在测验中识别多个正确答案?

标签 ios swift

我正在做一个测验,这个问题有多个正确答案。例如,在下面的代码中,对于“病变的颜色是什么”的问题,正确答案是“粉红色”。但我也希望它认识到红色也将被视为正确答案。有没有办法为一个问题编码多个正确答案?任何帮助将不胜感激。谢谢!

import Foundation

import UIKit

class Case1Q2ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var imageButton: UIButton!
@IBOutlet weak var nextButton: UIButton!
@IBOutlet var questionLabel: UILabel!

@IBOutlet var correctAnswerLabel: UILabel!

@IBOutlet var inputTextField: UITextField!

var enteredAnswer: String?

var correctAnswers = ["Pink", "Red"]

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Case1Q2ViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Case1Q2ViewController.keyboardWillHide), name: UIKeyboardWillHideNotification, object: nil)

    inputTextField.delegate = self

    titlesForLabels()
    nextButton.enabled = false

    imageButton.layer.cornerRadius = 2;
    imageButton.layer.borderWidth = 2;
    imageButton.layer.borderColor = UIColor.blackColor().CGColor

    questionLabel.layer.cornerRadius = 2;
    questionLabel.layer.borderWidth = 2;
    questionLabel.layer.borderColor = UIColor.blackColor().CGColor

}

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

func titlesForLabels() {
    questionLabel.text = "What is the colour of the lesion(s)?"
    correctAnswerLabel.text = correctAnswers.joinWithSeparator(", ")
    correctAnswerLabel.hidden = true

    inputTextField.text = nil
    inputTextField.enabled = true
}

func keyboardWillShow(notification: NSNotification) {
    let userInfo = notification.userInfo!

    let keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()

    UIView.animateWithDuration(0.1, animations: { () -> Void in
        self.view.frame.origin.y = -keyboardFrame.size.height
    })
}

func keyboardWillHide() {
    UIView.animateWithDuration(0.1, animations: { () -> Void in
        self.view.frame.origin.y = 0
    })
}

func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()

    enteredAnswer = textField.text

    checkForCorrectAnswer()

    return true
}

func checkForCorrectAnswer() {
    let answer = enteredAnswer!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
    if correctAnswers.contains(answer.lowercaseString) {
        print("Correct")
        correctAnswerLabel.textColor = UIColor.greenColor()
        correctAnswerLabel.text = "Correct!"
        nextButton.enabled = true

    } else {
        print("Wrong Answer")
        correctAnswerLabel.textColor = UIColor.redColor()
        correctAnswerLabel.text = "Incorrect! Please try again"
        nextButton.enabled = false

    }
    correctAnswerLabel.hidden = false
}
override func viewWillAppear(animated: Bool) {
    navigationItem.title = "Case 1: Q2"
}

最佳答案

您可以通过替换 var correctAnswer = "Pink" 来保留一系列正确答案符合 var correctAnswers = ["pink", "red"]

然后,在您的 checkForCorrectAnswer() 中方法,您必须检查正确答案数组是否包含输入的答案:

func checkForCorrectAnswer() {
    let answer = enteredAnswer!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
    if correctAnswers.contains(answer.lowercaseString) {
        // Correct
    } else {
        // Incorrect
    }
}

关于ios - Swift - 如何让文本字段在测验中识别多个正确答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951288/

相关文章:

swift - SKAction runBlock 似乎没有按预期工作

ios - 本地 git 不工作 - Xcode 4.6

ios - 从 GameOverScene 过渡到 GameScene

ios - MKMarkerAnnotationView 不显示

iphone - iOS Swift Storyboard 如何在登录后和登录前显示 View

ios - 如何从索引中删除 UIImageView?

ios - 将 IBOutlet 变量传递给另一个类

iOS12 导致 Metal Command Buffer 执行错误,渲染出现故障或不发生

ios - 如何从 swift 文件调用用 Objective C 编写的 Web 服务

ios - 静态库使用的框架如何在iOS上自动导入?