【问题标题】:increment and decrement button like the stepper swift递增和递减按钮,如步进器 swift
【发布时间】:2018-04-01 17:39:29
【问题描述】:

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

import UIKit

class FirstViewController: UIViewController {
    @IBOutlet var nbre: UILabel!

    @IBAction func incrementer(_ sender: UIButton) {
        nbre.text = Int(nbre.text) + 1
    }

我遇到的问题是将文本字段的原始值增加 1。当我这样做时,我会收到以下消息:

"可选类型'String?'的值"

【问题讨论】:

  • 1.以文字形式发布代码,而不是图片。 2.图片没有错误。 3. 在您的问题中以文本形式发布完整且准确的错误。
  • 首先,您需要展示一些研究成果。其次,请将代码发布为代码而不是图像,第三,告诉我们错误,我们应该如何知道错误???请阅读How To Ask

标签: ios swift


【解决方案1】:

尽管这个问题的质量很低,但我最好的猜测是标签的文本没有被强制展开,这就是错误的意思。只需在nbre.text 之后添加!

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

您还需要将Int 转换回String

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

【讨论】:

  • 即使使用新的“nbre.text = String(Int(nbre.text) + 1)”也会出现同样的问题
  • @ElyasBennani 你试过nbre.text = String(Int(nbre.text!)! + 1)吗?
  • 如果标签没有任何文字,这将崩溃。
  • @rmaddy 是的,但在 OP 的情况下,标签保证有文本。
  • @rmaddy 当 OP 最初在他的帖子中有一张图片时,标签的文字是“1”。
【解决方案2】:

用上面提到的代码试过,发现:

可选类型“字符串?”的值

您应该通过放置感叹号来解开该值,但如果标签不包含该值,这可能会导致崩溃。所以我们最好先用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)
    }
}

【讨论】:

  • 没有帮助我,得到另一个错误“表达式类型不明确,没有更多上下文”
  • 如果标签没有任何文字,这将崩溃。
  • 你是把+1作为文本还是只有1
  • @ElyasBennani,请立即查看。考虑到 label 在初始时持有一个整数值。说1
【解决方案3】:

错误的原因是因为UILabeltext 属性是一个可选的字符串,而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 中你需要设置标签的初始值:

nbre.text = "\(count)"

【讨论】:

  • 添加一个新的可变成本内存如果可以保证最初具有价值,最好直接使用标签内的文本
  • @Sh_Khan 否。视图不用于存储数据。使用适当的属性来存储数据要好得多。视图应该只显示数据。而且,如果您担心单个 Int 属性的内存,那么问题就更大了。
  • 听听 rmaddy。他说实话。使用视图对象来保存状态数据是个坏主意。 rmaddy,我建议的一个小改动是在count 属性上添加didSet,并在didSet 中设置标签的文本。 iBaction 可以简单地增加/减少计数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
相关资源
最近更新 更多