Вставить «из: «

#swift

Вопрос:

У меня есть следующая модель:

 struct MyModel: Codable, Hashable {
    let data: ASubModelData
    let error: Bool?
    let error_message: String?
    let error_code: Int?
}
 

и я пытаюсь создать переменную в представлении, чтобы затем присвоить ей значения следующим образом:

 @State var myVar: MyModel? = MyModel()
 

но это приводит к ошибке:

 Insert 'from: <#Decoder#>'
 

введите описание изображения здесь

Если бы я нажал «исправить», это было бы похоже на:

 @State var myVar: MyModel? = MyModel(from: Decoder)
 

и это неправильно, это также дает ошибку, как я могу создать переменную, которая является пустым экземпляром этой модели?

Ответ №1:

У вас struct нет другого инициализатора, кроме того, который предназначен для декодирования. Вы должны добавить инициализатор init() :

 init() {
  data = ?
  error = nil
  error_message = nil
  error_code = nil
}
 

Однако, поскольку MyModel содержит свойства, которые не являются необязательными, вероятно, было бы лучше инициализировать его с помощью nil :

 @State var myVar: MyModel?
 

Комментарии:

1. по-видимому, было достаточно только второй части 🙂 Спасибо