ios - 展开字典项值

标签 ios swift

我有一个字典和打印字典键值如下:

var student = ["name": "Alan Turing",
    "age": "23",
    "gender": "Male"
    ]

println(student["name"])

for item in student{
    println("Student: \(item.0) = \(item.1)" )
}

if let name = student["name"]{
    println(name)    
}

输出如下:

Optional("Alan Turing")
Student: gender = Male
Student: age = 23
Student: name = Alan Turing
Alan Turing

我想知道为什么为这行代码打印了可选值

println(student["name"]) ==> Optional("Alan Turing")

这与 forlet 方法有何不同,我是否需要在按键访问时显式解包项目值?例如

println(student["name"]!)

Demo

最佳答案

当您通过键 (dict[key]) 下标访问字典时,如果键不存在,则返回的值为 nil。所以student["name"]的结果类型是String?,考虑到nil的可能性,结果是一个Optional(...)

在另外两种情况下(forif let),控制结构会自动解包该值,因为不可能有值 nil 结果,因此 item 的类型是 (String, String) 而不是 (String, String?)name的类型是String

因此,如果您直接使用 student["name"],您应该解包可选值以获得 String(通过使用不同的解包运算符)。

关于ios - 展开字典项值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815668/

相关文章:

ios - 如何删除 firebase 中的子项但不删除其所在的文件夹?

ios - 交互转场+结束动画怎么做?

ios - 我是否应该担心我的 API key 被从 iOS 应用程序中提取

ios - 链接器命令失败,退出代码为 1(使用 -v 查看调用

ios - 以编程方式在 MKMapView 中设置标题

ios - iOS 使用 Swift 记录应用程序在后台时的滑动量

swift - 在 macOS SwiftUI TextEditor 中显示行号

ios - nsdateformatter --- 将字符串转换为日期

ios - 当我在 swift 中输入文本字段时移动小数点

ios - 如何快速比较颜色