我的应用程序中有一份食物日记,可以追踪你每天吃的食物,但是我很难在UITableViewCell
更新我的卡路里标签。我按下"保存到食物日记"我的应用程序崩溃了并且错误如下:
"fatal error: unexpectedly found nil while unwrapping an Optional value"
以下是我的PopUpVC
(UIViewController
中的代码,用户可以看到输入FoodName
和Calories
)
protocol AddRowDelegate {
func didAddRow(name : String, calories : String)
}
class PopupVC: UIViewController {
var delegate: AddRowDelegate?
var section: Int?
var caloriesLabel = " "
var tableData: [String] = [""]
var caloriesCell = caloriesForDiary()
@IBOutlet weak var foodTimeLabel: UILabel!
@IBOutlet weak var foodPopup2: UIView!
@IBOutlet weak var foodPopUp: UIView!
@IBOutlet weak var inputFood: UITextField!
@IBOutlet weak var inputCals: UITextField!
@IBAction func saveToDiary(_ sender: Any) {
dismiss(animated: true, completion: nil)
delegate?.didAddRow(name: inputFood.text!, calories: inputCals.text!)
}
然后我将来自食物和卡路里UItextFields
的输入传递给我的FoodDiaryVC
:
func didAddRow(name: String, calories: String) {
cals.calories.text = calories
print(name)
print(calories)
}
我添加了显示错误和ViewController
的图片。我不确定为什么它找到/返回零?我基本上只想设置我的卡路里标签等于输入(或整天的cals积累)
答案 0 :(得分:1)
您的cals
或calories
对象为nil
,导致崩溃。您没有在发布的代码中包含此对象,但请确保在访问对象之前对其进行实例化。
答案 1 :(得分:0)
嗨我不知道导致崩溃的原因是什么,但我相信它可以调试。按照我的建议,执行以下步骤。将方法 didAddRow 更改为
func didAddRow(name: String, calories: String) {
if(calories.characters.count != 0 && cal != nil) {
cal.calories.text = calories
}
print(name)
print(calories)
}
如果这不能提供合适的结果,请尝试在此方法中打印卡路里和卡路里。检查插座并在此方法中设置断点。