如何从扩展名访问变量并在Swift的视图控制器中使用它

时间:2019-08-06 22:48:35

标签: ios swift variables uiviewcontroller scope

该值已正确打印到Label,但我想在bubbleSort()中显示每次迭代。因此,我在每次迭代中都放置了一些打印命令。但是,它仅在控制台上打印。我想将每个迭代打印到Label2上。

我最终无法从视图控制器中的扩展名访问变量。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var userArr: UITextField!
    @IBOutlet weak var Label: UILabel!
    @IBOutlet weak var Label2: UILabel!

    @IBAction func sortBtn(_ sender: Any) {
        let strings = userArr.text

        let digs = strings?.digits

        var arrayIntegers = strings?.components(separatedBy: " ").flatMap { Int($0) }

        let t = arrayIntegers!.bubbleSort()

        Label.text = "\(t)"

        Label2.text = "" //This is where each iteration should be. 
       // "\(bubbleSort.a)" + "\(b)" + "\(c)" tried something similar to that 
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

extension Array where Element: Comparable {
    func bubbleSort (by areInIncreasingOrder: ((Element, Element) -> Bool) = (<)) ->[Element] {
        var data = self
        let a = print(data) //prints first iteration

        for i in 0..<(data.count-1){
            for j in 0..<(data.count-i-1) where areInIncreasingOrder(data[j+1], data[j]){
                let b = print(data) // print iteration n+1 to n-1
                data.swapAt(j, j+1)

            }
        }

        var c = print(data) // print last iteration

        return data
    }
}

2 个答案:

答案 0 :(得分:0)

您尝试了joined方法吗?

喜欢这个:

Label2.text = bubbleSort.joined(separator: "\n")

答案 1 :(得分:0)

代替var c = print(data)
// this grabs current text from label or empty string if nil
var currentText = Label2.text ?? "" 

// This assigns current text + " - YOURDATA" to it
Label2.text = "\(currentText) - \(data)"