当我尝试向下转换字典的元素时,我收到语法错误:
let adDict:Dictionary<String, AnyObject> = DidonWebServices.sharedInstance.adAtIndex (indexPath.row)
let titleString = adDict["description"] as? String // error: 'String' is not a subtype of '(String, AnyObject)'
如果我将上一行替换为:
let title:AnyObject? = adDict["description"]
let titleString = title as? String
编译器很高兴并且代码正在运行。
我不明白编译错误。有什么想法吗?
答案 0 :(得分:1)
这是因为subscript
中的Dictionary
会返回一个可选的:
subscript (key: KeyType) -> ValueType?
这意味着你必须先打开可选项才能进行向下转换:
let titleString = adDict["description"]! as? String
从Beta 3开始,您可以直接访问该值而无需向下转换,如下所示:
let titleString = adDict["description"]