我可以在Swift扩展程序中从其他模型初始化可编码模型吗?

时间:2019-06-15 02:20:35

标签: ios swift codable designated-initializer

我有一个可编码的模型

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

0 个答案:

没有答案