swift dictionary.unwrap.swift

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift dictionary.unwrap.swift相关的知识,希望对你有一定的参考价值。

private func unwrapIfCan(value: Any) -> Any {
    let m = Mirror(reflecting: value)
    guard let displayStyle = m.displayStyle else {
        return value
    }
    switch displayStyle {
    case .optional:
        break
    default:
        return value
    }
    guard let first = m.children.first else {
        return NSNull()
    }
    return first.value
}

extension Dictionary
{
    public func unwrappingValues() -> [Key: Any]
    {
        return reduce([Key: Any]()) { sum, e -> [Key: Any] in
            var sum = sum
            let value = unwrapIfCan(value: e.value)
            if !(value is NSNull) {
                print(value)
                sum[e.key] = value
            }
            return sum
        }
    }
}

// これがやりたい
var d1: [String: Any?] = ["a": 1, "b": nil]
d1.unwrappingValues() // → ["a": 1]
// これは、unwrapValuesが、OptionalなValueしか受け付けないなら実行出来ずでOK
var d2: [String: Int] = ["a": 1]
d2.unwrappingValues() // → ["a": 1]

以上是关于swift dictionary.unwrap.swift的主要内容,如果未能解决你的问题,请参考以下文章

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift

ios 整理(一)swift和oc的区别

swift swift_extension5.swift

swift swift_optional4.swift