如何在swift,IOS中实现函数count和dropLast?

时间:2015-04-16 10:28:12

标签: ios xcode swift

我在Swift制作计算器。卡在退格键中。如果用户按错了数字,则退格按钮将有助于从显示屏上删除数字。

虽然我写了dropLast函数并且有效。它返回适当的结果。如何使用计数方法,不了解计数方法的返回类型。

 @IBOutlet weak var display: UILabel!
    @IBAction func backspace() {
      //how to use count method to check collection of elements
      //dropLast drop the last digit and display result
       let dropedDigit = dropLast(display.text!)
       display.text = dropedDigit    
    }

2 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

private func dropLast(text: String) -> String {
    let endIndex = advance(text.endIndex, -1)
    return text.substringToIndex(endIndex)
}

它计算要进行剪切的索引(文本的endIndex - 1),然后将子字符串返回到此索引。此函数应删除最后一个字符。

我这里没有使用count方法,但是为你引用Swift 1.2引入了count(<#x: T#>)方法来计算包括字符串在内的集合的长度。

答案 1 :(得分:0)

我知道这个帖子已经过时了,但我刚刚在Swift 2.2中完成了这个工作的过程,并认为我可以帮忙回答它。

@IBAction func delButton(sender: AnyObject) {
    if display.text != nil {
        var tempString = Array(display.text!.characters)
        tempString.removeLast(1)
        display.text = ""
        for num in 0..<tempString.count {
            display.text = display.text! + String(tempString[num])
        }
    }
}

基本上,我们正在检查显示标签中是否有内容,因此我们不会抛出错误,如果是这样,请在函数范围内创建一个变量来保存标签& #39;字符串中的字符。之后,我们从数组中删除最后一个字符,清除标签以确保我们不会将已经存在的字符添加到我们的新值中,然后迭代更新的字符数组并将其添加到标签

重要的是要注意我们将数组中包含的值转换为String,因为它们已作为字符值放入数组中,其运行方式与标签所期望的字符串值不同

就像我说的那样,我知道这个帖子有点过时,但是我一直在浏览Swift的课程,并且发现虽然有很多关于Objective-C的信息,但是对于如何在Swift中做很多这样的事情,这是非常危险的信息。由于语言反复更新,我注意到两种语言之间的差距越来越大。