我有一本字典[字符串:任何!],它有整数、浮点数和字符串等值。当我用下面的代码创建URLComponent时,它不接受与整数和浮点数相关的值。
func queryItems(dictionary: [String: Any]) -> [URLQueryItem] { return dictionary.map { URLQueryItem(name: $0, value: $1 as? String) } }
ddrv8njm1#
我认为你应该考虑使用[String:String]而不是[String:Any],并在发送到queryItems函数之前将你的值转换为String。但是如果你想让它像这样,而不是从值Int,Float,Double转换为?String总是失败。你可以使用String()。
oymdgrw72#
显然Any可以是任何东西,但是如果你对输入有一些控制,一个简单的选择就是强制转换为LosslessStringConvertible,String,Substring和你的基本数值类型都符合它。警告:
Any
LosslessStringConvertible
String
Substring
true
false
NSObject
NSNumber
NSString
func queryItems(dictionary: [String: Any]) -> [URLQueryItem] { dictionary.map { URLQueryItem(name: $0, value: ($1 as? LosslessStringConvertible)?.description) } }
2条答案
按热度按时间ddrv8njm1#
我认为你应该考虑使用[String:String]而不是[String:Any],并在发送到queryItems函数之前将你的值转换为String。但是如果你想让它像这样,而不是从值Int,Float,Double转换为?String总是失败。你可以使用String()。
oymdgrw72#
显然
Any
可以是任何东西,但是如果你对输入有一些控制,一个简单的选择就是强制转换为LosslessStringConvertible
,String
,Substring
和你的基本数值类型都符合它。警告:
true
或false
。NSObject
不符合这一点,因此如果您混合使用NSNumber
或NSString
,则还需要考虑这些内容。