访问存储在 class Swift 中的变量

Accessing a variable stored within a class Swift

我不明白为什么我不能访问这个变量,见下文,我想要运动结果被点击时的值,但是 sportResult.selectedSport returns 没有?

let sportPickerData = SportPickerData()

    override func viewDidLoad() {
      super.viewDidLoad()

        sportPickerView.delegate = sportPickerData
        sportPickerView.dataSource = sportPickerData


class SportPickerData: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {

    var sports = ["Football", "Baseball", "Hockey", "Basketball"]

    var selectedSport: String?

    func numberOfComponentsInPickerView(yearPicker: UIPickerView) -> Int {
        return 1
    }

    func pickerView(yearPicker: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return sports.count
    }

    func pickerView(yearPicker: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        selectedSport = sports[row]
    }

    func pickerView(yearPicker: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        return "\(sports[row])"
        }
}

let sportResult = SportPickerData()


@IBAction func button(sender: UIButton) {
    label.text = sportResult.selectedSport
    }

sportResult 它不是您的选择器视图的委托或数据源,因此它的 selectedSport 属性 永远不会被初始化,因为它的 didSelectRow 方法永远不会被调用。要获取 selectedSport,您必须从 sportPickerData 获取它,它实际上是您的选择器的委托和数据源

let sportResult = SportPickerData() // delete this line 


@IBAction func button(sender: UIButton) {
    label.text = sportPickerData.selectedSport
}