我正在尝试使用UITableView来获取新的详细信息视图。我的原始代码基于一个教程,该教程创建了一个用于存储值的数据模型,其中包含一个名为Bonus的类。
在我的主要UITableView中,我有prepare(for: sender)
的以下内容:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
switch (segue.identifier ?? "") {
case "ShowDetail":
guard let bonusDetailViewController = segue.destination as? BonusSubmissionViewController else {
fatalError("Unexpected destination: \(segue.destination)")
}
guard let selectedBonusCell = sender as? BonusTableViewCell else {
fatalError("Unexpected sender: \(sender!)")
}
guard let indexPath = tableView.indexPath(for: selectedBonusCell) else {
fatalError("The selected cell is not being displayed by the table")
}
let selectedBonus = bonuses[(indexPath.row)]
bonusDetailViewController.bonus = selectedBonus
case "ShowSettings":
os_log("Going to settings.", log: OSLog.default, type: .debug)
default:
fatalError("Unexpected Segue Indentifier; \(segue.identifier!)")
}
}
当我手动加载奖金数据时,上述代码有效。现在我正在使用JSON文件来填充UITableView(以及从中获取所有源数据),我将let selectedBonus
更改为使用我的新jBonuses[(indexPath.row)]
,这就是我现在填充UITableView的方式(使用一个JSON文件)。当我尝试构建它时,我收到一个错误说明:
无法指定类型的值' BonusTableViewController.Bonuses'输入 '红利'?
在代码行上显示bonusDetailViewController.bonus = selectedBonus
我认为我不需要更改Bonus.swift数据模型,因为标签和结构没有改变,但我无法弄清楚这个错误试图告诉我的是什么要做的,特别是因为我的UITableView正确加载并且看起来与我使用基于JSON的方法之前的相同。
我希望这是有道理的。
答案 0 :(得分:0)
请仔细阅读错误消息并学会理解。
行无法指定类型的值' BonusTableViewController.Bonuses'输入'奖金?'
bonusDetailViewController.bonus = selectedBonus
中的表示
bonusDetailViewController.bonus
的类型为 Bonus?
selectedBonus
的类型为 Bonuses
。所以bonusDetailViewController.bonus
必须声明为Bonuses?
。在上一个问题中,您使用的是bonus
和bonuses
两种类型。请合并您的代码以仅使用其中一个。注释掉你想要删除的类型。