Ios 如何找到0以上用户输入的平均值

Ios 如何找到0以上用户输入的平均值,ios,swift,xcode,Ios,Swift,Xcode,因此,我试图仅使用0以上的用户输入值来计算结果的平均值。我不确定如何检查数组中的结果,以找出哪些值高于0,并将其从swift中的计算中排除 class ViewController: UIViewController { @IBOutlet weak var game1: UITextField! @IBOutlet weak var game2: UITextField! @IBOutlet weak var game3: UITextField! @IBOu

因此,我试图仅使用0以上的用户输入值来计算结果的平均值。我不确定如何检查数组中的结果,以找出哪些值高于0,并将其从swift中的计算中排除

class ViewController: UIViewController {
    @IBOutlet weak var game1: UITextField!
    @IBOutlet weak var game2: UITextField!
    @IBOutlet weak var game3: UITextField!

    @IBOutlet weak var series: UILabel!
    @IBOutlet weak var average: UILabel!
    @IBOutlet weak var high: UILabel!

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

    }

    @IBAction func calculate(_ sender: Any) {
        self.view.endEditing(true)

        guard
                let text1 = game1.text,
                let text2 = game2.text,
                let text3 = game3.text
        else { return }

        guard
                let game1Results = Int(text1),
                let game2Results = Int(text2),
                let game3Results = Int(text3)
        else { return }

        let gameResultsArray = [game1Results, game2Results, game3Results]
        let sumArray = gameResultsArray.reduce(0, +)
        let avgArrayValue = sumArray / gameResultsArray.count


        series.text = "\(sumArray)"
        average.text = "\(avgArrayValue)"
        if let maximumVal = gameResultsArray.max() {
        high.text = String(maximumVal)
        }
    }
}

要过滤掉数组中0以上的所有值,请使用filter方法。这将返回原始数组的一个子集,其中所有值都传递内部声明的条件-

var demoArray = [-1, -8, 0, 1, 5 ,6]

var positiveArray = demoArray.filter { (item: Int) -> Bool in
  return item > 0
}

print(positiveArray) // [1, 5, 6]
简单地说,你可以使用


与您的问题无关,但UITextField文本属性的默认值为空字符串,因此您的
guard let text1=game1.text将永远不会失败。您可以安全地打开
文本属性
过滤器
数组。你真的想要一个整数平均值吗?
let sumArray = gameResultsArray.filter({$0 > 0})
let avgArrayValue = sumArray.reduce(0, +) / sumArray.count