Swift 如果变量为';什么是快捷选项?
我试图确定Swift 如果变量为';什么是快捷选项?,swift,Swift,我试图确定Any类型的变量是否是可选的,如果是,我需要将其展开。这可能吗?这段代码解释了我试图实现的目标。我知道可选是通用的,我的编码方式是行不通的,我想知道是否有解决办法 extension Serializable { public func serialize() -> [String: Any] { var result = [String: Any]() let mirror = Mirror(reflecting: self)
Any
类型的变量是否是可选的,如果是,我需要将其展开。这可能吗?这段代码解释了我试图实现的目标。我知道可选是通用的,我的编码方式是行不通的,我想知道是否有解决办法
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
}
}
扩展可序列化{
public func serialize()->[字符串:任意]{
var result=[String:Any]()
让镜子=镜子(反射:自身)
给镜子里的孩子{
guard let label=child.label else{continue}
切换子值{
case let可序列化为可序列化:
结果[标签]=可序列化。序列化()
case let可选作为可选:
如果case.some(let值)=可选{
结果[标签]=值
}
违约:
结果[标签]=子值
}
}
返回结果
}
}
我能够让它工作
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
}
}
扩展可序列化{
public func serialize()->[字符串:任意]{
var result=[String:Any]()
让镜子=镜子(反射:自身)
给镜子里的孩子{
guard let label=child.label else{continue}
切换子值{
case let可序列化为可序列化:
结果[标签]=可序列化。序列化()
case let可选作为可选:
如果case.some(let值)=可选{
结果[标签]=值
}
违约:
结果[标签]=子值
}
}
返回结果
}
}