Ios 我可以从Swift扩展中的不同模型初始化可编码模型吗?
我有一个可编码的模型Ios 我可以从Swift扩展中的不同模型初始化可编码模型吗?,ios,swift,codable,designated-initializer,Ios,Swift,Codable,Designated Initializer,我有一个可编码的模型 public final class MyCodableModel: Codable { public let id: Int } 我还有另一个模型,里面恰好有相同的变量 public final class MyOtherModel { public let id: Int } 现在,我想在扩展中使用MyOtherModel实例化myodablemodel。由于依赖性问题,我不想直接修改MyCDableModel 我首先尝试在扩展中使用普通的初始值设定项,但它
public final class MyCodableModel: Codable {
public let id: Int
}
我还有另一个模型,里面恰好有相同的变量
public final class MyOtherModel {
public let id: Int
}
现在,我想在扩展中使用MyOtherModel
实例化myodablemodel
。由于依赖性问题,我不想直接修改MyCDableModel
我首先尝试在扩展中使用普通的初始值设定项,但它说我需要使用方便的初始值设定项
,因此我最终得到了以下结果:
extension MyCodableModel {
convenience init?(myOtherModel: MyOtherModel) {
id = myOtherModel.id
}
}
但是错误表明,'let'属性'id'可能无法直接初始化;使用“self.init(…)”或“self=…”代替
。我假设这是因为我没有使用指定的初始化器init(from:Decoder)
还有别的办法吗?或者我不能将
MyOtherModel
转换为myodablemodel
?您不能通过扩展来实现。您必须将初始化器添加到mycdablemodel
类中,但不能通过扩展来完成。您必须将初始化器添加到mycdablemodel
类中