Обработка ситуации, которая подразумевает ошибку в коде - PullRequest
0 голосов
/ 28 ноября 2018

Контекст для этого вопроса - watchkit, но он должен быть более применим к Swift.

У меня есть переход от таблицы в главном контроллере интерфейса ко второму контроллеру интерфейса со сборщиком.Средство выбора заполняется значениями, основанными на выбранной строке таблицы.Индекс выбранной строки rowIndex передается в контексте метода пробуждения (пример упрощен):

override func awake(withContext context: Any?) {
    super.awake(withContext: context)

    guard
        let context = context as? (delegate: InterfaceController, taskModel: TaskModel, rowIndex: Int),
        (context.rowIndex == 0 || context.rowIndex == 1)
    else {
        return //something wrong with the context
    }

    switch rowIndex {
    case 0:
        selection = roleOrTask.role
        pickerOptions = taskModel.roles //copy entries in case data model changed by another object
        setupPicker(options: pickerOptions, preselection: taskModel.currentRole)
    case 1:
        selection = roleOrTask.task
        pickerOptions = taskModel.tasks
        setupPicker(options: pickerOptions, preselection: taskModel.currentTask)
    default:
        return //rowIndex out of bounds
    }

}

Если достигнут любой из двух операторов возврата, это означает, что вкод.Метод awake присваивает значения свойствам контроллера интерфейса, которые неявным образом развернуты.Поэтому ранний возврат приведет к сбою программы при использовании необязательных свойств.

Что должно делать приложение, если условие подразумевает, что код нарушен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...