从Dictionary中获取AnyObject

时间:2014-07-10 14:41:37

标签: ios7 swift ios8 xcode6

我在stackoverflow上发现了几个关于此的问题但没有一个能解决我的问题。

我有一个Dictionary <String, AnyObject>填充了不同类型的对象(整数,字符串,数组)。 当我想根据密钥获得任何价值时,唯一的方法就是

    let lTitle: AnyObject? = content["title"]; // content is a Dictionary
    mTitleLabel.text = lTitle as String;

对我来说这看起来很可怕,但我尝试了另一个stackoverflow问题的提示,但它们没有用。

是否有人知道从AnyObject获取Dictionary的另一种较短方式?

已更新

它甚至会以这种方式工作mTitleLabel.text = content["title"] as AnyObject? as String

3 个答案:

答案 0 :(得分:0)

试试这个

mTitleLabel.text = content["title"] as? NSString

答案 1 :(得分:0)

您希望字典中的值是AnyObject吗? Int,String和Array都符合Any,但不符合AnyObject。

如果您将基础类导入到项目中,Swift有时会将Int转换为NSNumber,将String转换为NSString,将Array转换为NSArray而不是抛出错误。如果你想从AnyObject转到String,那么你可能需要进行多步骤转换,因为你必须通过NSString然后桥接它。

如果你制作类型为[String:Any]的字典,它会变得更清晰。

var content: Dictionary<String, Any> = ["title":"myTitle"]
let lTitle = content["title"] as String

答案 2 :(得分:0)

这很好用

mTitleLabel.text = content[ListCellContentKey.title]! as String;

不要忘记检查字典的键是否返回值,否则当你试图强制解包时它会崩溃