gpt4 book ai didi

ios - 为什么 print() 将我的字符串打印为可选?

转载 作者:可可西里 更新时间:2023-11-01 00:08:18 24 4
gpt4 key购买 nike

我有一个字典,我想使用它的一些值作为另一个字典的键:

let key: String = String(dictionary["anotherKey"])

在这里,dictionary["anotherKey"]42 但是当我在调试器中打印 key 时,我看到以下内容:

(lldb) expression print(key)
Optional(42)

这怎么可能?据我了解,String() 构造函数 返回一个可选值(并且当我编写 let key 时,编译器不会提示 : String 而不是 let key: String?)。有人可以解释这里发生了什么吗?

作为旁注,我目前正在使用 description() 方法解决这个问题。

最佳答案

这是设计使然 - 这是 Swift 的 Dictionary 的实现方式:

Swift’s Dictionary type implements its key-value subscripting as a subscript that takes and returns an optional type. [...] The Dictionary type uses an optional subscript type to model the fact that not every key will have a value, and to give a way to delete a value for a key by assigning a nil value for that key. (link to documentation)

您可以在 if let 构造中解包结果以摆脱可选,如下所示:

if let val = dictionary["anotherKey"] {
... // Here, val is not optional
}

如果您确定值在那里,例如,因为您在几步之前将它放入字典中,您也可以使用 ! 运算符强制解包:

let key: String = String(dictionary["anotherKey"]!)

关于ios - 为什么 print() 将我的字符串打印为可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36744537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com