2015-06-25 3 views
0

Я не мог исправить это. Когда он пытается назначить answerCorrectly на numLabel, я получаю ошибку времени выполнения. :(Не удалось исправить ошибку: неожиданно найдено нуль при развертывании Необязательное значение

var answeredCorrectly: Int? = 0 
func endGame(){ 
    let lastViewLet = LastView() 
    println("Count of correct answers: \(answeredCorrectly)") 
    lastViewLet.numberLabel.text = String(stringInterpolationSegment: answeredCorrectly) 
    answeredCorrectly = 0 
    performSegueWithIdentifier("toEnd", sender: nil) 
} 

класс LastView:.?

import Foundation 
import UIKit 



class LastView: ViewController { 

    @IBOutlet weak var numberLabel: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     numberLabel.text = "1" 
    } 


} 
+0

А где код функции, которая дала вам ошибку? – milo526

+0

Я только что изменил код и забыл func. Я отредактировал его сейчас. @ milo526 – Encul

+0

Попробуйте отладки. Попытайтесь выяснить, равен ли ни один из «lastViewLet», либо «numberLabel» равен нулю. – milo526

ответ

0

Ваш answeredCorrectly вар задается тип дополнительного междунар, но присвоить значение 0 к нему Вы уверены, что это то, что вы хотите Если это всегда будет иметь значение, вы можете использовать Int

Если вы используете опциональный, вы должны использовать if let конструкцию, чтобы иметь значение:.

if let answeredCorrectlyInt = answeredCorrectly as? Int { 
    println("Count of correct answers: \(answeredCorrectlyInt)") 
    lastViewLet.numberLabel.text = String(answeredCorrectlyInt) 
} 

Кроме того, вы используете String(stringInterpolationSegment: answeredCorrectly), когда можете просто использовать String(answeredCorrectly), и он будет правильно.

+1

Вы даже можете использовать '' \ (answerCorrectly) "' – milo526

+0

Он печатает answerCorrectlyInt для консоли перед сбоем, но я все еще получаю ошибку. Также я получил Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0) Я получал его каждый раз, даже задавая тему. – Encul

0

Это может произойти, если IBOutlet не подключен к фактическому UILabel в Interface Builder. Должен быть небольшой круг слева от @IBOutlet weak var numberLabel: UILabel!. Если круг пуст, переменная не связана с меткой. Убедитесь, что он подключен или попробуйте повторно подключить его.

Кроме того, вы на самом деле , показывающий Контроллер вида LastView?

+0

Ничего особенного. Я вижу имя IBOutlet в ссылках на метки метки. Тем не менее, я снова подключил этикетку и розетку. Но такой же выход. :( – Encul