打开某些 UISwitch 但不是全部以编程方式

Turning on certain UISwitch but not all programmatically

我正在尝试创建多个 UISwitch,但我试图只打开某些开关。 我只想打开两个数组(weightUnits 和 allUnits)中的开关。 谁知道我该怎么做?

let weightUnits = [ UnitMass.kilograms, UnitMass.stones, UnitMass.pounds, UnitMass.ounces ]
@objc func weightLong(_ sender: UIGestureRecognizer){
    if sender.state == .began{
        createOptionView(weightUnits)
    }
}
fileprivate func createOptionView(_ units: [UnitMass]) {
    for view in infoStack.subviews {
        //cleans the infoStack to make it ready for the new units.
        view.removeFromSuperview()
    }
    let allUnits = [ UnitMass.grams, UnitMass.kilograms, UnitMass.metricTons, UnitMass.stones, UnitMass.pounds, UnitMass.ounces ]
    for unit in allUnits {
        let prefix = unit
        let newOptionCard = UIStackView()
        newOptionCard.axis = .horizontal
        newOptionCard.alignment = .trailing
        newOptionCard.distribution = .fill
        let option = UISwitch()
        for usersUnit in units {
            if allUnits.contains(usersUnit){
                option.setOn(true, animated: false)
            }
        }
        newOptionCard.addArrangedSubview(option)
        let label = UILabel(frame: CGRect.zero)
        label.text = " " + prefix.symbol
        label.textColor = .white
        label.font = UIFont(name: "American Typewriter", size: 20)
        label.addConstraint(NSLayoutConstraint(item: label, attribute: NSLayoutConstraint.Attribute.width, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 60))
        newOptionCard.addArrangedSubview(label)
        infoStack.addArrangedSubview(newOptionCard)
    }
}

我找到了一种方法来做到这一点。我犯的错误是我没有使用 isEqual 但是我没有比较整个对象。

for usersUnit in usersUnits {
            if unitOption .isEqual(usersUnit){
                option.setOn(true, animated: false)
                break
            } else {
                option.setOn(false, animated: false)
            }
        }