我正在尝试使用文本字段设置问题以获得答案。只有在输入确切答案后才能显示下一个问题。我收到一个错误代码“如果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]
}
答案 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进行比较,这没有任何意义