1

我有一个可编码的模型

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

我还有另一个模型,其中恰好有相同的变量。

public final class MyOtherModel {
  public let id: Int
}

现在,我想在扩展中MyCodableModel使用实例化。由于依赖问题,MyOtherModel我不想直接修改。MyCodableModel

我首先尝试在我的扩展中使用普通的初始化程序,但它说我需要使用 a 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).

还有另一种方法可以做到这一点吗?或者我将无法转换MyOtherModelMyCodableModel?

4

0 回答 0