如何删除" ..."来自我的阵列?

时间:2017-06-24 12:10:33

标签: ios arrays swift string

在我的计算器应用程序中,我遇到了一个问题,我希望...显示在我的数组中,但只有当resultIsPending的if语句为真时才会显示。然后,我希望删除...。我怎么能在Swift中做到这一点?这是我的ViewController.swift的代码:

@IBOutlet weak var sequence: UILabel!

@IBOutlet weak var display: UILabel!

var userInTheMiddleOfTyping = false

var resultIsPending:Bool = false



var elements = [String]()
//var sequenceArray:Array = []
@IBAction func clear(_ sender: Any) {
    display.text = " "
    elements.removeAll()
    elements = elements.filter{$0 != "\(String(describing: display.text))"}
    sequence.text = elements.joined()


}



override func viewDidLoad() {



}

@IBAction func touchDigit(_ sender: UIButton) {

    let digit = sender.currentTitle!

    elements.append(digit)

    combineToMakeOperationHistory()



    if userInTheMiddleOfTyping{

            let textCurrentlyInDisplay = display!.text!

            display!.text = textCurrentlyInDisplay + digit


        } else {
            display!.text = digit

            userInTheMiddleOfTyping = true

        }


}

var displayValue: Double{
    get{
        return Double(display.text!)!

    }
    set{
        display.text = String(newValue)
    }
}

private var brain = CalculatorBrain()

@IBAction func performOperation(_ sender: UIButton) {

    let perSender = sender.currentTitle!

    elements.append(perSender)

    combineToMakeOperationHistory()

    if perSender == "+" || perSender == "÷" || perSender == "×" || perSender == "-" || perSender == "^"{

        resultIsPending = true



    }
    if userInTheMiddleOfTyping{
        brain.setOperand(displayValue)
        userInTheMiddleOfTyping = false
    }



    userInTheMiddleOfTyping = false

    if let mathematicalSymbol = sender.currentTitle{

        brain.performOperation(mathematicalSymbol)
    }
    if brain.result != nil{
        displayValue = brain.result!
    }
}

func combineToMakeOperationHistory() {

         if resultIsPending{ // this is the if statement
        elements.append("...") 
         }else if resultIsPending == false{

    }
    sequence.text = elements.joined()

}

3 个答案:

答案 0 :(得分:1)

您可以过滤元素数组并删除"..."

elements = elements.filter({ $0 != "..." })

每当您想要删除String value的出现时。

答案 1 :(得分:0)

你可以使用帽子之类的东西

var resultIsPending:Bool = false{
    didSet(isPending) {
        if isPending {
            elements.append("...")
        } else {
            elements.dropLast()
        }
    }
}

答案 2 :(得分:0)

不要合并不同类型的数据。没有理由将...放入元素数组中:

func combineToMakeOperationHistory() {
    var sequenceText: String = elements.joined()

    if (resultIsPending) {
       sequenceText += "..."
    }

    sequence.text = sequenceText
}

由于我们没有将...附加到数组,因此我们不必将其删除。