Начните разработку приложений для iOS (Swift) - кнопка "Добавить" больше не работает

Я следую за Начать разработку приложений для iOS (Swift) от Apple, на параграфе " Реализация и редактирование поведения". После того, как я реализовал режимы редактирования и удаления, я заметил, что кнопка " Добавить" (+) больше не работает. Вот код, который выдает ошибку при попытке добавить кнопку:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    super.prepare(for: segue, sender: sender)

    switch(segue.identifier ?? "") {

    case "AddItem":
        os_log("Adding a new meal.", log: OSLog.default, type: .debug)

    case "ShowDetail":
        guard let mealDetailViewController = segue.destination as? MealViewController else {
            fatalError("Unexpected destination: \(segue.destination)")
        }

        guard let selectedMealCell = sender as? MealTableViewCell else {
            fatalError("Unexpected sender: \(sender)")
        }

        guard let indexPath = tableView.indexPath(for: selectedMealCell) else {
            fatalError("The selected cell is not being displayed by the table")
        }

        let selectedMeal = meals[indexPath.row]
        mealDetailViewController.meal = selectedMeal

    default:
        fatalError("Unexpected Segue Identifier; \(segue.identifier)")
    }
}

Вот предупреждение и предложенное исправление его

Вот ошибка, которую я получаю

Вот раскадровка

Вот идентификатор segue

Вот идентификатор

Вот файлы, предоставленные Apple, которые, кстати, те же, что я использую: https://developer.apple.com/sample-code/swift/downloads/08_ImplementEditAndDeleteBehavior.zip

Я знаю, что этот код старый и его нужно обновить до Swift 4.1, но у меня нет большого опыта, поэтому я не могу сделать это сам. Спасибо всем за помощь.

1 ответ

Решение

В соответствии с ошибкой, вы достигаете случая по умолчанию при включении идентификатора segue. Это означает, что идентификатор в последовательности не соответствует ни одному из случаев. И действительно, в сообщении говорится, что идентификатор addItem, который не совпадает AddItem или же ShowDetail, Похоже, идентификаторы segue чувствительны к регистру, а? Поэтому измените идентификатор сегмента в вашей раскадровке так, чтобы он совпадал с тем, который вы ожидаете AddItem, и попробуй еще раз.

Другие вопросы по тегам