gpt4 book ai didi

swift - 在 Swift 中从按钮标题转换 double

转载 作者:行者123 更新时间:2023-11-28 09:40:19 25 4
gpt4 key购买 nike

我正在尝试检索 PopupButton 的 selectedItem 的文本,将其转换为 double 并用它做一些数学运算。

在阅读和观看了关于可选值的教程之后,我仍然可以理解 Xcode 要我做什么,如下所示:

let foo = Double((stundenPopup.selectedItem?.title)!)!*0.20;

(弹出按钮已在 viewDidLoad 上填充,并且不会更改)正如我所读到的,使用它不是一个好习惯!运营商在这里和那里。如果我理解正确的话, !运算符(operator)强制展开。我真正不明白的是为什么?,使所选项目成为可选项目,而第二个!

有人能给我看看这里的灯吗?非常感谢...

最佳答案

对于类型转换,您不能使用可选值。
可以做的是:

guard let title = stundenPopup.selectedItem?.title else { /* title is nil */ return }
// now the title is not optional anymore
guard let double = Double(title) else { /* title is not a Double */ return }
// now you've successfully cast the title into a Double
let foo = double*0.2

请注意,如果 guard-let 语句失败,您的函数的其余部分将不会被调用。
如果你确实想在语句之后继续你的函数,你可以使用 if-lets:

if let title = stundenPopup.selectedItem?.title {
// now the title is not optional anymore
if let double = Double(title) {
// now you've successfully cast the title into a Double
let foo = double*0.2
}
}

您还可以定义一个默认值,用于无法转换标题的情况。
这是一个与上面两个示例相同的单行代码:

// if the title cannot be cast to Double, foo will be 0*0.2 which is still 0
let foo = (Double(stundenPopup.selectedItem?.title ?? "") ?? 0)*0.2

关于swift - 在 Swift 中从按钮标题转换 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50058463/

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