Swift 无法解析线程1:致命错误:索引超出范围
我有以下资料:Swift 无法解析线程1:致命错误:索引超出范围,swift,Swift,我有以下资料: class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, NSFetchedResultsControllerDelegate { @IBOutlet weak var playerList: UIPickerView! var playerData: [[String]] = [[String]]() func viewDidLoad()
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, NSFetchedResultsControllerDelegate {
@IBOutlet weak var playerList: UIPickerView!
var playerData: [[String]] = [[String]]()
func viewDidLoad() {
super.viewDidLoad
playerData = [["1", "2", "3"],["a","b","c"],["i","ii","iii"],["!","@","#"]]
// Connect data:
self.playerList.delegate = self
self.playerList.dataSource = self
}
// The number of columns of data
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 4
}
// The number of rows of data
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return playerData.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return playerData[component][row]
}
}
我不断得到:
线程1:致命错误:索引超出范围
您的
numberOfComponents
应该是二维数组中外部数组的大小
您的代码:
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 4
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return playerData.count
}
每次返回4。假设你缩短了你的阵列,只有3个子阵列。它将抛出此错误,因为pickerView希望从只有3行的数组中多出一行。所以它尝试访问第四个索引,发现它无效
解决方案:
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 4
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return playerData.count
}
将相同的逻辑应用于numberOfRowsInComponent
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return playerData[component].count
}
您的
numberOfComponents
应该是二维数组中外部数组的大小
您的代码:
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 4
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return playerData.count
}
每次返回4。假设你缩短了你的阵列,只有3个子阵列。它将抛出此错误,因为pickerView希望从只有3行的数组中多出一行。所以它尝试访问第四个索引,发现它无效
解决方案:
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 4
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return playerData.count
}
将相同的逻辑应用于numberOfRowsInComponent
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return playerData[component].count
}
numberOfComponents
是playerData。count
和numberOfRowsInComponent
是playerData[component]。count
numberOfComponents
是playerData[component]。count