在Swift 3中索引超出范围

时间:2022-04-29 16:41:08
@IBOutlet weak var mainTableView: UITableView!
var taskArray: [Task]? = nil

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "mainCell") as! mainCell

    taskArray = CoreDataHandler.fetchObject()

    let task = taskArray![indexPath.row]

    cell.titleLabel.text = task.title
    //cell.dateLabel.text = String(task.date)

    return cell
}

I always get the error: "Thread 1: Fatal error: Index out of range" on this line: let task = taskArray![indexPath.row]. Could anybody help me out?

我总是会得到这样的错误:“线程1:致命错误:索引超出范围”:让任务= taskArray!谁能帮我一下吗?

1 个解决方案

#1


1  

You have to send array count here , don't return a static number as it may exceed the array count

你必须在这里发送数组计数,不要返回一个静态数字,因为它可能会超过数组计数

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  return taskArray.count
}

// also convert

/ /还将

var taskArray = [Task]()

//

/ /

fetching should be in viewDidLoad

取回应该在viewDidLoad中

override func viewDidLoad()  {
   super.viewDidLoad()
   taskArray = CoreDataHandler.fetchObject()
}

not inside cellForRowAt

不是在cellForRowAt

#1


1  

You have to send array count here , don't return a static number as it may exceed the array count

你必须在这里发送数组计数,不要返回一个静态数字,因为它可能会超过数组计数

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  return taskArray.count
}

// also convert

/ /还将

var taskArray = [Task]()

//

/ /

fetching should be in viewDidLoad

取回应该在viewDidLoad中

override func viewDidLoad()  {
   super.viewDidLoad()
   taskArray = CoreDataHandler.fetchObject()
}

not inside cellForRowAt

不是在cellForRowAt