嘿伙计们,
我很喜欢编程,所以我跟着Udemy教我Swift 2.2。
出于学习目的,我一直在尝试编程BMI计算器,其中我有一个文本字段(只显示值)和一个滑块,我可以将我的体重以千克为单位。拖动滑块后,该值在文本字段中可见。我无法在文本字段中放置一个值,以便它显示在滑块上!
使用相同的文本字段 - 滑块关系,高度以cm为单位。现在我创建了一个IBAction,将我的kgSlider.value带到我的kgField.text中,它看起来像这样:
@IBAction func kgSet(sender: AnyObject) {
kgField.text! = String(Int(kgSlider.value))
}
多数民众赞成工作正常,但我不知道,如果真的有价值,我就打开了(就像课程中的老师一样)。好的,我知道在这种情况下会有一个值,但我想更真实,因此我尝试使用Optional-Binding来查找,如果有值而不是直接打开它。
因此我在我的代码中使用了cm.Field和cm.Slider,但它现在还没有用,我也不知道为什么。代码如下:
@IBAction func cmSet(sender: AnyObject) {
if let tempCm = String(Int(cmSlider.value)) as String! {
cmField.text = tempCm
}
}
所以我创建了一个名为tempCM的常量,如果有值,它将从cmSlider获取值。因此,我将cmSlider.value像其他IBAction一样转换为Int,然后转换为String。如果有值,它将把它携带到cmField.text中。这没有用,因此我尝试使用" as String!"声明,但我知道我总是0而不是正确的值。
那我在那里做错了什么?
答案 0 :(得分:1)
所以,这应该编译好并为您提供所需的结果。
@IBAction func cmSet(sender: AnyObject) {
if let tempCm = String(Int(cmSlider.value)) {
cmField.text = tempCm
}
}
你也可以试试这个
cmField.text = String(Int(cmSlider.value)) ?? " "
在第二个示例中,您使用可选运算符来说明是否可以将其转换为Int,然后将Int转换为字符串将cmField.text属性设置为其值,否则使用空格作为默认值。