ios 在Swift转换[字符串:任何!]到URL组件

af7jpaap  于 2022-12-20  发布在  iOS
关注(0)|答案(2)|浏览(164)

我有一本字典[字符串:任何!],它有整数、浮点数和字符串等值。当我用下面的代码创建URLComponent时,它不接受与整数和浮点数相关的值。

func queryItems(dictionary: [String: Any]) -> [URLQueryItem] {
    return dictionary.map {
        URLQueryItem(name: $0, value: $1 as? String)
    }
}
ddrv8njm

ddrv8njm1#

我认为你应该考虑使用[String:String]而不是[String:Any],并在发送到queryItems函数之前将你的值转换为String。但是如果你想让它像这样,而不是从值Int,Float,Double转换为?String总是失败。你可以使用String()。

oymdgrw7

oymdgrw72#

显然Any可以是任何东西,但是如果你对输入有一些控制,一个简单的选择就是强制转换为LosslessStringConvertibleStringSubstring和你的基本数值类型都符合它。
警告:

  • 返回值为truefalse
  • NSObject不符合这一点,因此如果您混合使用NSNumberNSString,则还需要考虑这些内容。
func queryItems(dictionary: [String: Any]) -> [URLQueryItem] {
    dictionary.map {
        URLQueryItem(name: $0, value: ($1 as? LosslessStringConvertible)?.description)
    }
}

相关问题