这是我ViewController.swift
注意到的错误输出行。
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var sections: [Section] = []
override func viewDidLoad() {
super.viewDidLoad()
SectionsData().getSectionsFromData({
sections in
self.sections = sections
self.tableView.reloadData()
})
}
...
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Next line errors out: unexpectedly found nil while unwrapping an Optional value
let cell = tableView.cellForRowAtIndexPath(indexPath) as! TableViewCell
cell.titleLabel!.text = sections[indexPath.section].objects[indexPath.row].name
cell.datetimeLabel!.text = sections[indexPath.section].objects[indexPath.row].date
return cell
}
...
TableViewCell.swift
样式Custom
,单元格标识符为cell
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var datetimeLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
所以tableView.cellForRowAtIndexPath(indexPath)
可能由于数据尚未准备好显示而给出nil。我该如何解决这个问题?
答案 0 :(得分:1)
这实际上不是一个解缠的问题。您不小心使用了cellForRowAtIndexPath
而不是dequeueReusableCellWithIdentifier:indexPath
。
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as? TableViewCell
如@Eendje所述,请确保在Interface Builder中注册您的单元标识符。只需查看您的故事板,单击单元格并在Interface Builder中更新您的标识符。