【发布时间】:2021-07-22 22:37:53
【问题描述】:
我会在具有可编码协议的结构中使用枚举。但我不知道,很高兴为枚举制作一个init。如果我没有init,编译器会引发错误。
这里的目标是UpdateIn类型中的value参数可以是两个东西,一个字符串或者一个FormFiled结构。
你知道怎么做这个初始化吗?
struct UpdateIn: Content {
var keyPath: [String]
var value: Value
var operation: String
}
enum Value: Decodable {
init(from decoder: Decoder) throws {
<#code#>
}
case str(String)
case formField(FormField)
}
struct FormField: Content {
var name: String
var type: String
var options: [String: FormFieldOption]?
var selectedOption: String?
var visibleIfIndIsVisible: Int?
var ind: Int
var mandatory: Bool // TODO: isMandatory
var dateCreatedAt: Date?
var selectItemOtherArbitraryValueEnable: Bool?
var regex: String?
var hasImage: Bool?
var defaultFormFieldOptionId: String?
}
根据回答我尝试提取值并分配给特定变量,但被拒绝,你知道为什么吗?
let formField: FormField = params.value
无法将“Value”类型的值转换为指定类型“FormField”
【问题讨论】:
-
这取决于您的数据是什么样的。最终你只是分配给自己,要么
self = .string(someStringValue),self = .formField(someFormField)