Я думаю, что я понимаю идею опций Swift, т. Е. Свойство с необязательным типом представляет собой MUST HAVE, в то время как свойство с дополнительным типом МОЖЕТ ИМЕТЬ, но мне кажется, что это один из эти функции, такие как обязательная обработка исключений или обязательный отступ, в то время как в теории теоретически имеют некоторые непредвиденные практические последствия. Это ситуация, с которой я столкнулся. Я создаю медицинское приложение для оценки познавательных способностей. Тест проводится пациентом у поставщика, и он состоит из, скажем, 10 различных видов деятельности. Модель данных приложения представляет собой простой класс Test
, который собирает результаты деятельности. Каждая деятельность имеет свой собственный класс, так же как и пациент и поставщик. Бизнес-логика определяет, что все действия должны быть завершены или тест недействителен, и пациент и поставщик, очевидно, являются обязательными. Естественное определение класса Test
быБыстрые варианты использования опций
class Test {
var provider: Provider
var patient: Patient
var activity1: Activity1
var activity2: Activity2
...
var activity10: Activity10
}
Теперь проблема заключается в том, что для создания экземпляра класса Test
, мне нужно иметь все результаты для всех видов деятельности; на практике я должен переносить все отдельные экземпляры Provider
, Patient
, а действия и только по завершении теста создают экземпляр Test
, это, конечно, нецелесообразно. Таким образом, для практических целей все свойства Test
могут быть сделаны необязательными, а класс заполняется постепенно, но теперь класс Test
не представляет модель данных точно; кроме того, любой доступ к свойствам должен быть развернут. Одним из вариантов было бы создание необязательного массива действий, которые могут расти постепенно, но еще раз класс не будет представлять намерения модели данных. Наконец, можно создать «сестра-класс» PartialTest
со всеми необязательными свойствами, а когда PartialTest
полностью заполнен, создайте экземпляр Test
. Тем не менее это кажется излишним.
Итак, я неверно истолковываю роль опций в Swift? Если нет, есть ли какой-либо практический способ сохранить класс Test
, как и должно быть?