像步进swift那样递增和递减按钮

时间:2018-04-01 17:39:30

标签: ios swift

我需要增加文本字段的值。我收到了一个错误。

@OneToOne(fetch = FetchType.LAZY), to @OneToOne(optional = false, fetch = FetchType.LAZY)

我遇到的问题是将文本字段的原始值增加1.当我这样做时,我有这样的信息:

  

"可选类型的值'字符串?'"

3 个答案:

答案 0 :(得分:0)

即使这个问题质量很低,我最好的猜测是标签的文字不是强行打开的,这就是错误所说的。只需在!之后添加nbre.text

nbre.text = Int(nbre.text!) + 1

您还需要将Int转换回String

nbre.text = String(Int(nbre.text!)! + 1)

答案 1 :(得分:0)

尝试使用上述代码并找到:

  

可选类型的值'字符串?'

您应该通过添加感叹号来解包该值,但如果标签不包含该值,则可能会导致崩溃。因此,我们最好使用if-let - >检查价值。 Increment - > assign to label

@IBOutlet var nbre: UILabel!

@IBAction func incrementor(_ sender: UIButton) {
    if let text = nbre.text, let number = Int(text) {
        nbre.text = String(number + 1)
    }
}

答案 2 :(得分:0)

错误的原因是因为text的{​​{1}}属性是可选字符串,而UILabel初始值设定项需要非可选Int。然后,您尝试将生成的String值分配给Int属性。您无法将text值分配给Int属性。

但这里有一个更大的问题。您错误地使用标签作为数据来源来跟踪计数器。这是一个糟糕的设计。

正确的解决方案是拥有一个实际的String属性来跟踪当前计数。然后将标签的Int设置为此计数属性的值。

text

最有可能在import UIKit class FirstViewController: UIViewController { @IBOutlet var nbre: UILabel! var count = 0 @IBAction func incrementer(_ sender: UIButton) { count += 1 nbre.text = "\(count)" } 中,您需要设置标签的初始值:

viewDidLoad