初始化期间的可编码默认值

穆拉利穆鲁甘

我是Swift的新手,正在为我的项目开发功能标志概念,并且无法使用codable作为默认标志值。目前我的代码看起来像这样

import Foundation 

class KillSwitches: Codable {

    public enum CodingKeys: String, CodingKeys {
        case featureOne
        case featureTwo
        case featureThree
    }

    let featureOne: Bool = true
    let featureTwo: Bool = true
    let featureThree: Bool = false
}

我有内部帮助程序类,可帮助对json文件中的所有值进行编码和解码,这就是为什么此处未明确提及的原因。在此实现之前,我没有任何默认值,并且正在使用struct从正常工作的远程配置文件中读取所有内容。现在,如果无法访问远程配置文件,则下一步是为功能使用默认值。

我期望可以初始化该类,这样我将获得该类的默认对象,就像从远程文件中读取内容一样。

如果不通过init(来自解码器:),就无法实例化此类。我什至尝试做

KillSwitches.init(from: KillSwitches.self) 这也不起作用,我得到的类型与预期的类型解码器不符。

我的Json看起来像这样

{
  "featureOne" : false,
  "featureTwo" : true,
  "featureThree" : true
}

任何解决此问题的指南/指针均深表感谢。

清扫器

一旦符合Encodable,就好像您的类已显式声明一个encode(to:)方法和一个init(from:)初始化程序。

通过使用参数声明一个初始化程序,当所有属性都具有默认值时,您将立即失去编译器为您生成的默认(无参数)初始化程序。这就是为什么你做不到的原因KillSwitches()这在文档中说明

Swift为任何为其所有属性提供默认值的结构或类提供默认初始化器,并且自身不提供至少一个初始化器。默认初始化程序仅创建一个新实例,并将其所有属性设置为其默认值。

KillSwitches已经有一个init(from:)初始化程序,因此Swift不提供默认的初始化程序。

您只需要在自己中添加无参数的初始化程序即可:

class KillSwitches: Codable {

    public enum CodingKeys: String, CodingKey {
        case featureOne
        case featureTwo
        case featureThree
    }

    let featureOne: Bool = true
    let featureTwo: Bool = true
    let featureThree: Bool = false

    init() { }
}

然后您可以执行以下操作:

let defaultKillSwitches = KillSwitches()

如果需要默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

何时初始化默认值?

来自分类Dev

何时初始化默认值?

来自分类常见问题

默认值和零初始化混乱

来自分类Dev

Rails使用默认值初始化新对象

来自分类Dev

Ruby Hash初始化(默认值为nil)

来自分类Dev

找不到系统BootOrder。初始化默认值

来自分类Dev

多值设置未使用默认值初始化

来自分类Dev

无法使用默认值初始化结构

来自分类Dev

未初始化的枚举数默认值

来自分类Dev

使用默认值初始化HashMap吗?

来自分类Dev

未初始化变量的默认值

来自分类Dev

无法使用默认值初始化输入[数字]

来自分类Dev

用默认值初始化const类成员

来自分类Dev

如何使用默认值动态初始化数组?

来自分类Dev

用默认值初始化weka实例

来自分类Dev

C ++双重初始化-默认值?

来自分类Dev

初始化期间的Swift可选值可防止默认初始化程序继承

来自分类Dev

LinkedList 初始化时的默认值

来自分类Dev

自动贴图| 如果不是默认值/初始化值,则仅映射

来自分类Dev

使用具有默认值的哈希值初始化ruby对象?

来自分类Dev

如果取了一个未初始化的变量的地址,它是否被初始化为默认值?

来自分类Dev

具有默认值的C ++统一初始化

来自分类Dev

使用非默认值在VBA中初始化静态变量

来自分类Dev

对具有默认值的结构进行括号(聚合)初始化

来自分类Dev

如何使花括号初始化和默认值一起工作?

来自分类Dev

如何在sqlalchemy中使用默认值初始化数据库?

来自分类Dev

Java-Hibernate条件.setResultTransformer()使用默认值初始化模型字段

来自分类Dev

使用一组默认值(elm或haskell)初始化模块

来自分类Dev

在C中,未初始化的数组中char的默认值是什么?

Related 相关文章

热门标签

归档