gpt4 book ai didi

swift - 如果变量是快速可选的,则展开变量?

转载 作者:行者123 更新时间:2023-11-28 08:24:54 25 4
gpt4 key购买 nike

我正在尝试确定 Any 类型的变量是否是可选的,如果是,我需要将其解包。这可能吗?这段代码解释了我想要实现的目标。我知道 Optional 是通用的,我的编码方式行不通,想知道是否有解决方法

extension Serializable {
public func serialize() -> [String: Any] {
var result = [String: Any]()
let mirror = Mirror(reflecting: self)

for child in mirror.children {
guard let label = child.label else { continue }

if let optional = child.value as? Optional {
if case Optional.some(let value) = optional {
result[label] = value
}
}
else {
result[label] = child.value
}
}

return result
}
}

最佳答案

我能够让它工作

extension Serializable {
public func serialize() -> [String: Any] {
var result = [String: Any]()
let mirror = Mirror(reflecting: self)

for child in mirror.children {
guard let label = child.label else { continue }

switch child.value {
case let serializable as Serializable:
result[label] = serializable.serialize()

case let optional as Optional<Any>:
if case .some(let value) = optional {
result[label] = value
}

default:
result[label] = child.value
}
}

return result
}
}

关于swift - 如果变量是快速可选的,则展开变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40309301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com