我在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
答案 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;
不要忘记检查字典的键是否返回值,否则当你试图强制解包时它会崩溃