Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我可以从Swift扩展中的不同模型初始化可编码模型吗?_Ios_Swift_Codable_Designated Initializer - Fatal编程技术网

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
类中