Что это значит поток 1 exc_bad_instruction (код = exc_i386_invop subcode= 0x0)

#swift #swift3

#swift #swift3

Вопрос:

введите описание изображения здесь

У меня возникла эта проблема, когда я попытался делегировать оценки от GameViewController к ViewController :

введите описание изображения здесь

Он работает нормально, если я удаляю bestName .

Комментарии:

1. Пожалуйста, скопируйте и вставьте код здесь, не публикуйте изображение кода.

Ответ №1:

При первом запуске вашего приложения в нем не будет значений UserDefaults .

Это означает, что в viewDidLoad вызове:

 UserDefaults.standard.string(forKey:)
  

вернет nil значение. Но вы присваиваете результат необязательной переменной.

Измените строку на:

 if let name = UserDefaults.standard.string(forKey:"bestName") {
    bestName = name
}
  

С вызовом нет проблем integer(forKey:) , потому что он возвращается 0 , если нет существующего значения.