为什么我的点击计数器在高于 10 时又回到 1?

Why does my tap counter go back to 1 when it gest higher than 10?

我只是想简单地点击一个按钮,它会向标签添加 1。如果该标签低于 3,则打印其低于 3。如果它高于 3,则打印它在上面。这一直有效到 10,然后打印出它低于三,即使标签仍然显示 10 或更高。

var counter = 0
@IBOutlet weak var count: UILabel!

  @IBAction func testigbutton(_ sender: UIButton) {
      
       counter = counter + 1
       count.text = String(format: "%i", counter)
    
    if count.text! < "3" {
        
        print("Less than 3")
    } else if count.text! > "10" {
               
        print("More than 3")
    }
  }

String 的比较是逐个字符进行的。

"9" 大于 "3" 因为如果排序,字符 9 在字符 3 之上。

"10" 小于 "3" 因为,当逐个字符比较时,"1" 小于 "3" 并在那里结束。

如果你需要进行数值比较(一个实际的数字而不是字符串),使用:

if Int(count.text!) < 3 { ... } else { ... }

请注意,我比较的是实际 Int 而不是 String

换行

if count.text! < "3" {

至:

if counter < 3 {

这样您就可以按顺序比较数字,而不是按字典顺序比较字符串。

由于您正在比较字符串,因此它会检查每个字符。换句话说,它不是与 10 进行比较,而是先与 1 进行比较,然后再与 0 进行比较。由于 1 <3,因此它会打印出来。所有你需要解决这个问题的方法是简单地与你的计数器变量进行比较,或者将它转换为 Int 或 Double 之类的东西 Int(count.text!)