При преобразовании типа String в тип Int и выводе этого типа Int в консоли выдается сообщение об ошибке "Неожиданно найден ноль при развертывании необязательного значения"?

При преобразовании типа String в тип Int и распечатке этого типа Int в консоли выведите ошибку

Неожиданно найдено ноль при развертывании необязательного значения

ViewController.swift

    @IBAction func btnVerifyOTP(_ sender: Any)
    {
          let verifyOTP = 
          self.storyboard?.instantiateViewController(withIdentifier: "VerifyOTP") as! VerifyOTP
          self.navigationController?.pushViewController(verifyOTP, animated: true)
          verifyOTP.strPhone = self.tfMobile.text!
    }

ViewController2.swift

class VerifyOTP: UIViewController {

var strPhone = String()

override func viewDidLoad() {
        super.viewDidLoad()

       let numPhone = Int(strPhone)!
       print(numPhone)
    }
}

Ошибка: этот метод выдает "Неожиданно найденный ноль при развертывании необязательного значения"

1 ответ

Одна из ваших проблем заключается в порядке инициализации:viewDidLoad выполняется раньше verifyOTP.strPhone = self.tfMobile.text! выполняется (из-за pushViewController).

Это означает, что strPhone пустая строка, и Int(strPhone) возвращается nil, поэтому принудительная распаковка потерпит крах.

Возможно, вы захотите изменить порядок выполнения в btnVerifyOTP:

@IBAction func btnVerifyOTP(_ sender: Any)
{
    let verifyOTP = 
    self.storyboard?.instantiateViewController(withIdentifier: "VerifyOTP") as! VerifyOTP
    verifyOTP.strPhone = self.tfMobile.text!
    self.navigationController?.pushViewController(verifyOTP, animated: true)
}

Вы должны также сделать некоторые nil проверка в вашем viewDidLoad:

if let numPhone = Int(strPhone) {
     print(numPhone)
}
Другие вопросы по тегам