具有确切答案字段的琐事(快速)

时间:2016-03-29 16:26:49

标签: ios swift

我正在尝试使用文本字段设置问题以获得答案。只有在输入确切答案后才能显示下一个问题。我收到一个错误代码“如果answerField == answers [currentQuestionIndex]”我相信我需要考虑可以作为答案输入的内容。我被卡住了,可以在正确的方向上使用一些帮助。谢谢

@IBAction func answerField(sender: AnyObject) {
    for index in 1...5 {

        if answerField == answers[currentQuestionIndex] {
            ++self.currentQuestionIndex
            if self.currentQuestionIndex == self.questions.count {
                self.currentQuestionIndex = 0
            }
        }

    }
}


let questions: [String] = ["From what is cognac made?", "What is 7+7?", "What is the capital of Vermont?"]
let answers: [String] = ["Grapes", "14", "Montpelier"]

override func viewDidLoad() {
    super.viewDidLoad()
    currentQuestion.text = questions[currentQuestionIndex]

}

2 个答案:

答案 0 :(得分:2)

answerField,因为您在此处显示的不是UITextField;这是一个功能。这就是错误告诉您的内容:将AnyObject作为参数并且不返回任何内容((AnyObject)->())的函数无法与String进行比较。

我想也许你想要做的就是为你的答案字段创建一个插座(而不是一个动作):

@IBOutlet weak var answerField: UITextField! // Make sure you actually hook this up to your text field in the storyboard.

然后,听取对文本字段内容的更改:

override func viewDidLoad()
{
    super.viewDidLoad()

    answerField.addTarget(
        self, 
        action: #selector(answerChanged(_:)), 
        forControlEvents: .EditingChanged)

    currentQuestion.text = questions[currentQuestionIndex]
}

然后处理对答案字段文本的更改:

func answerChanged(sender: AnyObject)
{
    if (answerField.text ?? "") == answers[currentQuestionIndex]
    {
        currentQuestionIndex = currentQuestionIndex + 1 < questions.count ? currentQuestionIndex + 1 : 0
        currentQuestion.text = questions[currentQuestionIndex]
    }
}

或类似的东西。

答案 1 :(得分:0)

如果answerField变量是UIText字段,那么你需要使用它的文本。这是一个可选属性,因此您还需要打开它

if (answerField.text ?? "") == answers[currentQuestionIndex]

从提到的错误代码看起来你没有变量answerField并且你试图将函数本身与String进行比较,这没有任何意义