向下铸造一本字典的元素

时间:2014-07-24 15:58:34

标签: dictionary swift downcast

当我尝试向下转换字典的元素时,我收到语法错误:

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

编译器很高兴并且代码正在运行。

我不明白编译错误。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是因为subscript中的Dictionary会返回一个可选的:

subscript (key: KeyType) -> ValueType?

这意味着你必须先打开可选项才能进行向下转换:

let titleString = adDict["description"]! as? String

从Beta 3开始,您可以直接访问该值而无需向下转换,如下所示:

let titleString = adDict["description"]