如何在Swift中将字典[String:Any]转换为[String:Float]

时间:2019-04-23 23:16:25

标签: swift

我有一个像这样的字典

let dict: [String : Any] = ["2019-04-23 22:00:00": ["2. high": 0.9535, "1. open": 0.9532, "4. close": 0.9529, "3. low": 0.9517]]

如何将值转换为[String : Double]

这是我的问题所带来的JSON问题:{“ Time Series FX(5min)”:{“ 2019-04-23 23:40:00”:{“ 1. open”:“ 1.1223”,“ 2。高”:“ 1.1223”,“ 3。低”:“ 1.1222”,“ 4。收盘”:“ 1.1223”}}}

1 个答案:

答案 0 :(得分:0)

我认为如果您使用这样的演员表:

let result: [String : [String: Double]]? = dict as? [String : [String: Double]]

但是,如果您不确定dict的值类型,但是需要找到符合条件的值,则可以使用以下功能:

@inlinable public func compactMap<ElementOfResult>(_ transform: (Value) throws -> ElementOfResult?) rethrows -> [ElementOfResult]

像这样:

let map = dict.values.compactMap { (value) -> [String : Double]? in
    guard let valueMap = value as? [String: Any] else { return nil }
    let filterResult = valueMap.filter { $0.value is Double }
    return filterResult as? [String : Double]
}