无法使用Delegate更新UITableViewCell中的标签

我在我的应用程序中有一个食物日记,用于跟踪您每天所吃的食物,但是我正在努力更新我的UITableViewCell卡路里标签。 我的应用程序崩溃,只要按“保存到食物日记”,错误是:

 "fatal error: unexpectedly found nil while unwrapping an Optional value" 

这里是我在我的PopUpVCUIViewController ,用户可以看到inputFoodNameCalories

 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的input传递给我的FoodDiaryVC

 func didAddRow(name: String, calories: String) { cals.calories.text = calories print(name) print(calories) } 

我添加了显示错误和ViewController 。 我不知道为什么find/返回零? 我基本上只是试图设置我的卡路里标签等于input(或一整天的积分)

popupVC

错误

caloriescell

你的calscalories对象是nil ,导致崩溃。 您不在发布的代码中包含此对象,但在访问对象之前请确保对象已实例化。

嗨,我不知道是什么原因导致崩溃,但我确定它可以被debugging。 按照我的build议做下面的步骤。 将方法didAddRow更改为

 func didAddRow(name: String, calories: String) { if(calories.characters.count != 0 && cal != nil) { cal.calories.text = calories } print(name) print(calories) } 

如果这不能给你比用这种方法打印卡路里和卡路里的合适结果。 用这种方法检查sockets并放置断点。