arrays - 数组返回 null 并崩溃

标签 arrays swift

我在一个类中有一个对象数组,并试图将该数组引用到 UIPickerView,但是当 UITextField 被点击时,它崩溃并返回 nil。当点击 countryInput 文本字段时,它应该显示带有“摩纳哥,日本”等的选择器 View ......关于我做错了什么的任何想法?提前谢谢你。

class SelectionViewController: UIViewController {

var lifeArr : [LifeClass] = []

let picker = UIPickerView()

    override func viewDidLoad() {
    super.viewDidLoad()     

    let Monaco = LifeClass()
    Monaco.country = "Monaco"
    Monaco.male = 85.6
    Monaco.female = 93.5

    let Japan = LifeClass()
    Japan.country = "Japan"
    Japan.male = 81.9
    Japan.female = 88.8

    lifeArr = [Monaco, Japan]
  }

}


class SetupViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

@IBOutlet weak var birthDayInput: UITextField!
@IBOutlet weak var countryInput: UITextField!

var selectionData : SelectionViewController!
var picker = UIPickerView()

    override func viewDidLoad() {
    super.viewDidLoad()

        picker.dataSource = self
        picker.delegate = self

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return selectionData.lifeArr.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return selectionData.lifeArr[row].country
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    countryInput.text = selectionData.lifeArr[row].country
}



}

最佳答案

创建一个新类来保存这些数据,并在任何需要访问它的 VC 中使用它。例如

class LifeClassDatabase
{
  var lifeArr : [LifeClass] = []

  init() 
  {
    let Monaco = LifeClass()
    Monaco.country = "Monaco"
    Monaco.male = 85.6
    Monaco.female = 93.5

    let Japan = LifeClass()
    Japan.country = "Japan"
    Japan.male = 81.9
    Japan.female = 88.8

    lifeArr = [Monaco, Japan]
  }

}

从例如SetupViewController 顶级:-

private var lifeClassDatabase = LifeClassDatabase()

然后在您的数据源代码中使用它,例如:

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return lifeClassDatabase.lifeArr.count
}

关于arrays - 数组返回 null 并崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320327/

相关文章:

python - 使用 python 将列表元素转换为连续的元组

java - 数组 toString 以及也具有 toString 方法的对象

php - 从具有特定内容(特殊字符)的数组中删除元素

swift - 如何使用特定目标运行 Xcode UI 测试

ios - 将自定义 ViewController 的实例连接到 View

swift - SKAudioNode 播放一次声音

python - 使用 genfromtxt 创建具有空列的 numpy 数组

c - 双指针运算,遍历数组字符串的字符

swift - 从 NSTextView 获取格式化字符串

swift - 定期从 Firebase 中删除数据