无法分配类型的值' BonusTableViewController.Bonuses'输入'奖金?' Swift4和JSON中的错误

时间:2018-05-01 05:14:12

标签: swift4 xcode9

我正在尝试使用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的方法之前的相同。

我希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

请仔细阅读错误消息并学会理解。

  

无法指定类型的值' BonusTableViewController.Bonuses'输入'奖金?'

bonusDetailViewController.bonus = selectedBonus中的

表示

  • 左侧bonusDetailViewController.bonus的类型为 Bonus?
  • 右侧selectedBonus的类型为 Bonuses

所以bonusDetailViewController.bonus必须声明为Bonuses?。在上一个问题中,您使用的是bonusbonuses两种类型。请合并您的代码以仅使用其中一个。注释掉你想要删除的类型。