Контекст для этого вопроса - 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 присваивает значения свойствам контроллера интерфейса, которые неявным образом развернуты.Поэтому ранний возврат приведет к сбою программы при использовании необязательных свойств.
Что должно делать приложение, если условие подразумевает, что код нарушен?