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值)=可选{
结果[标签]=值
}
违约:
结果[标签]=子值
}
}
返回结果
}
}