Не удается присвоить значение типа BonusTableViewController.Bonuses типу Bonus? ошибка в Swift4 и JSON - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь нажать на 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. 'Bonus?

в строке кода, которая говорит bonusDetailViewController.bonus = selectedBonus

Не думаю, что мне нужно менять модель данных Bonus.swift, поскольку метки и структуры не были изменены, но я не могу понять, что пытается сказать мне эта ошибка, тем более что мой UITableView загружается правильно и выглядит так же, как и до того, как я использовал метод на основе JSON.

Надеюсь, это имеет смысл.

1 Ответ

0 голосов
/ 01 мая 2018

Пожалуйста, внимательно прочитайте сообщение об ошибке и научитесь его понимать.

Невозможно присвоить значение типа BonusTableViewController.Bonuses типу Bonus?

в строке bonusDetailViewController.bonus = selectedBonus означает

  • Тип левой стороны bonusDetailViewController.bonus равен Bonus?
  • Тип правой стороны selectedBonus равен Bonuses.

поэтому bonusDetailViewController.bonus должно быть объявлено как Bonuses?. В своем предыдущем вопросе вы использовали оба типа bonus и bonuses. Пожалуйста, объедините ваш код, чтобы использовать только один из них. Закомментируйте тип, который вы хотите отбросить.

...