При преобразовании типа 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)
}