gpt4 book ai didi

ios - Xcode - Swift 编译器错误 : cannot convert the expression's type 'Double' to type 'Double'

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:24 27 4
gpt4 key购买 nike

如何在 swift 中将标 checkout 口字符串转换为 double 字符串?

我有一个计时器正在更新标签:labelOutletForSecondsCount.text。标签用字符串“0,00”初始化。我想将停止的 timeString(我从我的计时器中获取)保存为变量中的 Double,以便在某些计算中使用它。

我认为这行代码应该这样做,但我得到以下“Swift 编译器错误:无法将表达式的类型‘Double’转换为类型‘Double’”。

var timeStringIntoDoubleValue = (labelOutletForSecondsCount.text as NSString).doubleValue

这行代码运行良好:

var textFieldInsertLengthIntoDoubleValue = (textFieldInsertLength.text as NSString).doubleValue

但为什么它不能与 labelOutletForSecondsCount.text 一起使用?

我应该提到我在计算属性中这样做:

var length : Double {
var textFieldInsertLengthIntoDoubleValue = (textFieldInsertLength.text as NSString).doubleValue
return textFieldInsertLengthIntoDoubleValue
}

var time : Double {
var timeStringIntoDoubleValue = (labelOutletForSecondsCount.text as NSString).doubleValue
return timeStringIntoDoubleValue
}

这很可能会增加奇怪的错误:无法将表达式的类型“Double”转换为类型“Double”。

最佳答案

错误信息具有误导性。 UILabeltext 属性是可选的:

var text: String? // default is nil

不能直接转换为NSString。您可以强行打开值:

var timeStringIntoDoubleValue = (labelOutletForSecondsCount.text! as NSString).doubleValue

但如果 text 值为 nil,这将在运行时崩溃。更好用“可选绑定(bind)”:

var timeStringIntoDoubleValue = 0.0
if let text = labelOutletForSecondsCount.text {
timeStringIntoDoubleValue = (text as NSString).doubleValue
}

或者,使用 "nil-coalescing operator" ??提供默认值:

var timeStringIntoDoubleValue = (labelOutletForSecondsCount.text ?? "0" as NSString).doubleValue

在这里,labelOutletForSecondsCount.text ?? “0” 评估为(展开的)文本如果不是 nil,则值为 "0",否则为 "0"


它使用文本字段编译的原因是 text 属性UITextField 被声明为一个隐式解包可选:

var text: String! // default is nil

关于ios - Xcode - Swift 编译器错误 : cannot convert the expression's type 'Double' to type 'Double' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579569/

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