Смысл enum
в том, что его можно создать только в одном из его предопределенных и неизменных случаев. Тип enum
может принимать только те значения, которые определены в типе компиляции, вы не можете добавить к нему больше случаев после того, как тип был объявлен, и вы не можете изменить его существующие случаи.
Ваша функция string
также не имеет смысла, вы должны просто перезаписать значение по умолчанию rawValue
вашего enum
, а затем получить доступ к свойству, к которому вы сейчас обращаетесь, используя string
с rawValue
.
enum SupportType: String, Codable {
case type1 = "Type 1"
case type2 = "Type 2"
case type3 = "Type 3"
}
Если вы определяете свойство типа SupportType
для другого типа, вы должны определить его как необязательное, а не пытаться создать «пустое значение» для SupportType
. Вы также должны изменить свой пользовательский инициализатор так, чтобы он принимал необязательный входной аргумент для supportType
.
class NewType {
let name:String
var supportType:SupportType?
var supportName:String?
init(name: String, supportType: SupportType? = nil, supportName: String? = nil){
self.name = name
self.supportType = supportType
self.supportName = supportName
}
}
Тогда назовите это как
NewType(name: data.name, supportType: nil, supportName: nil)