SWIFT访问嵌套字典

时间:2015-06-05 21:44:56

标签: ios swift dictionary

我有一个包含User对象的Dictionary,而User对象是一个包含键" Name"的字典。 在Swift中,我需要访问" Name"。

的值

所以我做了以下事情:

let user = question[kUserOwner] as! PFUser
let userName = user[kName] as! String
userButton.setTitle(userName, forState:UIControlState.Normal)

1)真的没有更简单/更短的方法吗? 在目标C中:

[_userButton setTitle:[[question objectForKey:kUserOwner] objectForKey:kName] forState:UIControlStateNormal];

我确实意识到它不是类型安全的,但只要我知道自己在做什么,我就可以忍受。

2)有什么办法可以避免施法吗?

1 个答案:

答案 0 :(得分:1)

下标时,您会获得一个可选项。你不能下标一个Optional。因此,虽然您可以避免投射,但您无法避免展开

let dinner = ["name":"Matt"]
let douter = ["owner":dinner]
let name = douter["owner"]!["name"]

但这只有效,因为Swift非常清楚地知道douter是什么。因此,最好分阶段完成这项工作,正如Swift希望你做的那样,例如嵌套的if let绑定系列:

let dinner : AnyObject = ["name":"Matt"] as AnyObject
let douter : AnyObject = ["owner":dinner] as AnyObject
if let owner = douter["owner"] as? [NSObject:AnyObject],
    let name = dinner["name"] as? String {
        // do something with name
}