【问题标题】:Am I able to add a member-wise initializer to a Codable-conforming object? [closed]我可以将成员初始化器添加到符合 Codable 的对象吗? [关闭]
【发布时间】:2020-01-06 20:29:51
【问题描述】:

我目前有一个符合 Codable 的类并且有一个像这样的初始化器

public class A: Codable {
    var aString: String?
    public init(input: String?) {
        self.aString = input
    }
}

当我尝试创建它的实例时,我得到一个错误

let myA = A(input: "Goodbye world")

调用中的参数标签不正确(具有“输入:”,预期为“来自:”)

我是否仅限于 Codable 类的 init(from decoder: Decoder) throws 初始化程序?

【问题讨论】:

  • 我无法重现错误并回答您的问题,是的,您可以拥有自己的自定义初始化方法

标签: swift codable


【解决方案1】:

您的代码是正确的,请仔细检查您是否真的有一个公共初始化程序而不是私有初始化程序。

我把它放到我的 Xcode Playground 中,一切都按预期工作:

public class A: Codable {
    var aString: String?
    public init(input: String?) {
        self.aString = input
    }
}

let a = A(input: "123")

【讨论】:

  • 谢谢,我忘记了游乐场 - 在询问之前我可以轻松地在那里进行测试。教一个人钓鱼和所有 :) 我的公共课程和初始化程序在一个 pod 中;删除我的派生数据成功了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
相关资源
最近更新 更多