Могу ли я инициализировать Codable Model из другой модели в расширении Swift? - PullRequest
1 голос
/ 15 июня 2019

У меня есть кодируемая модель

public final class MyCodableModel: Codable {
  public let id: Int
}

У меня также есть другая модель, в которой есть такие же переменные.

public final class MyOtherModel {
  public let id: Int
}

Теперь я хочу создать экземпляр MyCodableModelиспользуя MyOtherModel в расширении.Я не хочу изменять MyCodableModel напрямую из-за проблем с зависимостями.

Сначала я попытался использовать обычный инициализатор в своем расширении, но он сказал, что мне нужно использовать convenience initializer, поэтому я закончилс этим:

extension MyCodableModel {
  convenience init?(myOtherModel: MyOtherModel) {
    id = myOtherModel.id
  }
}

Но ошибка говорит 'let' property 'id' may not be initialized directly; use "self.init(...)" or "self = ..." instead.Я предполагаю, что это потому, что я не использую назначенный инициализатор init(from: Decoder).

Есть ли другой способ сделать это?Или я не смогу конвертировать MyOtherModel в MyCodableModel?

...