【问题标题】:Delete last character in Swift 3删除 Swift 3 中的最后一个字符
【发布时间】:2017-01-29 07:19:02
【问题描述】:

我正在创建一个简单的计算器应用程序,目前正在努力在点击我的按钮时删除最后一个字符。我正在使用dropLast() 方法,但我不断收到错误

在调用中缺少参数 #1 的参数

@IBAction func onDelPressed (button: UIButton!)  {
     runningNumber = runningNumber.characters.dropLast()
     currentLbl.text = runningNumber
}

【问题讨论】:

    标签: ios swift3


    【解决方案1】:

    Swift 4(附录)

    在 Swift 中,您可以直接在String 实例上应用dropLast(),不再调用.characters 来访问CharacterViewCharacterView

    var runningNumber = "12345"
    runningNumber = String(runningNumber.dropLast())
    print(runningNumber) // 1234
    

    Swift 3(原始答案)

    我假设 runningNumber 是一个 String 实例。在这种情况下,runningNumber.characters.dropLast() 不是String 类型,而是CharacterView

    let foo = runningNumber.characters.dropLast()
    print(type(of: foo)) // CharacterView
    

    您需要先使用CharacterView 实例化String 实例,然后再将其分配回String 类型的属性,例如

    var runningNumber = "12345"
    runningNumber = String(runningNumber.characters.dropLast())
    print(runningNumber) // 1234
    

    即,对于您的情况

    @IBAction func onDelPressed (button: UIButton!)  {
      runningNumber = String(runningNumber.characters.dropLast())
      currentLbl.text = runningNumber
    }
    

    【讨论】:

    • @Mike97 如果String 实例(例如runningNumber)仅属于单个Character 或为空(""),则在应用dropLast 后生成String 实例到CharacterView 将是一个空的String ("")。将dropLast() 应用于空序列将导致空(子)序列。这是我所期望的。您如何定义不同的结果?
    • 你是对的。但是,在 Xcode8.3(在 Sierra 中)中工作正常,而在 Xcode8.2(El Capitan)中,相同的代码正在打印最后一个字符(如果只有一个字符)。所以后来我清理了项目,删除了“Developer”文件夹..再次重新运行,现在按预期打印一个空行。这很奇怪,对不起。 PS我现在投票给这个答案;-)
    【解决方案2】:

    从 swift 中的字符串/文本中删除最后一个字符

    var str1 = "123456789"
    str1.removeLast()
    print(str1)
    

    输出:

    12345678

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 2011-12-15
      • 2018-04-29
      相关资源
      最近更新 更多