【问题标题】:Convert [String: Any] to [String: String] in swift快速将 [String: Any] 转换为 [String: String]
【发布时间】:2020-05-16 11:06:26
【问题描述】:

如何在 Swift 中将 [String: Any] 转换为 [String: String]。我试过这样投射,但没有帮助:

for (key, value) in dictionary {
    dictionary[key] = value as! String
}

【问题讨论】:

  • 您能解释一下您的用例吗?
  • 为什么没有帮助?你能解释一下你必须从什么样的数据开始,都是 String 类型的值还是可以混合,如果是的话,如何处理非 String 值。

标签: ios swift dictionary casting


【解决方案1】:

这里是安全的方法,转换后的将只包含 [String: String],非字符串 Any 将被丢弃:

let converted = dictionary.compactMapValues { $0 as? String }

【讨论】:

    【解决方案2】:

    这里:

    import Foundation
    
    let anyDict = ["String0": "0", "String1": 1] as [String : Any]
    var stringDict = [String: String]()
    
    for (key, value) in anyDict {
        if let value = value as? String {
            stringDict[key] = value
        }
    }
    print(stringDict)
    

    【讨论】:

      【解决方案3】:

      如果你真正想做的就是:

      在 Swift 中将 [String: Any] 转换为 [String: String]。

      如果Anys 中的任何一个不是Strings,如果您乐于一无所获,那么您可以这样做:

      安全:

      if let stringDictionary = dictionary as? [String: String] {
          //Use your new stringDictionary here
      }
      

      不安全:

      let stringDictionary = dictionary as! [String: String]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-02
        • 2011-03-08
        • 2017-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多