Я новичок в Swift и пытаюсь обернуть мою голову вокруг необязательных значений. Насколько я могу судить, хотя я, вероятно, ошибаюсь - переменные могут быть необязательными и, следовательно, содержать значение nil, и они должны учитываться в коде.Быстрые опции - Неожиданно найдено нуль при развертывании дополнительного значения
Всякий раз, когда я нажимаю кнопку «Сохранить» в своем приложении, я получаю сообщение об ошибке: «Неустранимая ошибка: неожиданно найдено нуль при развертывании необязательного значения».
@IBAction func saveTapped(sender: AnyObject) {
//code to save fillup to Parse backend
// if variable is not nil
if let username = PFUser.currentUser()?.username {
// set username equal to current user
self.object.username = username
}else{
println("PFUser.currentUser()?.username contained a nil value.")
}
// if variable is not nil
if let amount = self.amountTextField.text {
//set amount equal to value in amountTextField
self.object.amount = self.amountTextField.text
}else{
println("self.amountTextField.text contained a nil value.")
}
// if variable is not nil
if let cost = self.costTextField.text {
// set cost equal to the value in costTextField
self.object.cost = self.costTextField.text
}else{
println("self.costTextField.text contained a nil value.")
}
// set date equal to the current date
self.object.date = self.date
//save the object
self.object.saveEventually { (success, error) -> Void in
if error == nil {
println("Object saved!")
}else{
println(error?.userInfo)
}
}
// unwind back to root view controller
self.navigationController?.popToRootViewControllerAnimated(true)
}
Не уверен, что если ошибка из-за чего-то в этом блоке кода или где-то еще - может обеспечить основной код класса, если это необходимо.
Любая помощь, которую может предоставить любой, может быть оценена по достоинству, так как это уже давно подтачивало меня.
Является ли 'self.date' а необязательным и происходит ошибка на строке' self.object.date = self.date'? Потому что похоже, что это единственное значение, которое может быть nil и не имеет 'if let'. – Moritz
Кстати, вы должны делать все ваши 'if let', как вы делали в первом с' username': используйте развернутое значение внутри первой ветви. Я имею в виду использование 'amount' вместо' self.amountTextField.text' внутри 'if let' и т. Д. – Moritz
Вы также можете получить' nil while unwrapping optional', если, например, ваш 'self.costTextField' не был подключен правильно как выход, и вы объявили его как неявно развернутый необязательный, как '@IBOutlet var costTextField: UITextField!' – Frankie