2017-07-17 209 views

回答

0

简单地说,你可以这样来做:

if let castedDict = dictionary as? [String: String] { 
    print("Converted successfully: \(castedDict)") 

} else { 
    print("Failed to cast the dictionary") 
} 
+0

谢谢你,但castedDict是零。 – LoveCode

+0

如果您要转换的字典无法转换为'[String:String]',则此投射将失败。我更新了我的代码,使其更加清晰。 –

+0

谢谢你的协助。 – LoveCode

2

不能转换字典直接从[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"] 
相关问题