Swift 3:如何将[String:AnyObject]转换为[String:String]?
问题描述:
我要将[String: Anyobject]
字典转换为[String: String]
字典? 我该怎么做?Swift 3:如何将[String:AnyObject]转换为[String:String]?
答
简单地说,你可以这样来做:
if let castedDict = dictionary as? [String: String] {
print("Converted successfully: \(castedDict)")
} else {
print("Failed to cast the dictionary")
}
答
不能转换字典直接从[String: AnyObject]
到[String: String]
:因为AnyObject
可以在同一字典持有不同类型的值,每个这样的值项ISN” t一定可转换为String
。
相反,如果可能,您需要遍历每个键值对并有条件地执行值转换为String
。例如:
// (example) source dict
let dict: [String: AnyObject] = ["foo": "1" as AnyObject,
"bar": 2 as AnyObject,
"baz": "3" as AnyObject]
// target dict
var targetDict = [String: String]()
for (key, value) in dict {
if let value = value as? String { targetDict[key] = value }
} // targetDict: ["foo": "1", "baz": "3"]
谢谢你,但castedDict是零。 – LoveCode
如果您要转换的字典无法转换为'[String:String]',则此投射将失败。我更新了我的代码,使其更加清晰。 –
谢谢你的协助。 – LoveCode