Я пытаюсь создать своего рода математические игры, в которых, когда враг стреляет, пользователю предлагается вопрос по математике, я сделал так, чтобы, когда враг был застрелен, выскакивала клавиатура с цифрами, где пользователь вводил ответ. Но всякий раз, когда клавиатура всплывает, я получаю сообщение об ошибке:
Поток 1: неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения
В верхней части кода я объявил переменные, которые я использую:
var button1:SKLabelNode?
var answerDisplay:SKLabelNode!
Эта функция запускается при выстреле врага:
func runMathsProblem(){
//This is the label that is meant to display what the user enters
let answerDisplay = SKLabelNode(fontNamed: "Bulky Pixels")
answerDisplay.name = "AnswerDisplay"
answerDisplay.text = "= "
answerDisplay.fontSize = 110
answerDisplay.fontColor = SKColor.white
answerDisplay.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.left
answerDisplay.zPosition = 110
answerDisplay.position = CGPoint(x: self.size.width * 0.38, y: self.size.height * 0.63)
self.addChild(answerDisplay)
//This is the button the user presses to type "1" on screen
let button1 = SKLabelNode(fontNamed: "Bulky Pixels")
button1.name = "Button1"
button1.text = "1"
button1.fontSize = 110
button1.fontColor = SKColor.white
button1.zPosition = 120
button1.position = CGPoint(x: self.size.width * 0.3, y: self.size.height * 0.32)
self.addChild(button1)
}
Здесь он обнаруживает, нажал ли пользователь кнопку, и предназначен ли для добавления числа, нажатого в переменную answerDisplay, для отображения на экране (здесь также возникает ошибка):
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch: AnyObject in touches{
let pointOfTouch = touch.location(in: self)
if button1!.contains(pointOfTouch){ **//This is where I get the error**
answerDisplay!.text = answerDisplay.text! + "1"
}
}
}
Я думаю, это как-то связано с тем, как я объявил переменную