ios - SWIFT 访问嵌套字典

标签 ios swift dictionary

我有一个包含用户对象的字典,该用户对象是一个包含键“名称”的字典。 在 Swift 中,我需要访问“名称”的值。

所以我做了以下事情:

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

1) 真的没有更简单/更快捷的方法吗? 在 objective-c 中:

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

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

2) 有什么办法可以避免强制转换吗?

最佳答案

当你下标时,你会得到一个可选值。并且您不能为Optional添加下标。因此,虽然您或许可以避免转换,但您无法避免展开:

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

但这之所以有效,是因为 Swift 非常清楚 douter 是什么。因此,最好分阶段进行,就像 Swift 期望的那样,例如使用一系列嵌套的 if let 绑定(bind):

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
}

关于ios - SWIFT 访问嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676299/

相关文章:

objective-c - 横向嵌入 YouTube 视频

Python数据结构,字典?

ios - 以 ulaw 格式捕获 iOS 麦克风音频

ios - NSDateFormatter不适用于单个硬编码日期

ios - 数组清空才完成方法吧

swift - 使所有 TabBarItems 最初未被选中

ios - 如何使用 Watch Connectivity 传输 UIImage

Python 字典中的计数器与字典中的列表选择元素的概率

python - Python字典中的最小值

php - objective-c /php session ?