@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