Uitableview 当我试图在swift中加载tableview时,为什么会出现EXC_BAD_指令错误?

Uitableview 当我试图在swift中加载tableview时,为什么会出现EXC_BAD_指令错误?,uitableview,core-data,swift,Uitableview,Core Data,Swift,在将一些值保存到coredata数据库后,我尝试填充tableview。我要求它显示代码中指示的一些值,但无论我做什么,都会得到上面的错误。 有什么建议吗?我试过其他一些关于这个问题的帖子,但似乎没有任何效果 我想不出我在哪里可能会给出零输出,斯威夫特没有预料到 override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell?

在将一些值保存到coredata数据库后,我尝试填充tableview。我要求它显示代码中指示的一些值,但无论我做什么,都会得到上面的错误。 有什么建议吗?我试过其他一些关于这个问题的帖子,但似乎没有任何效果

我想不出我在哪里可能会给出零输出,斯威夫特没有预料到

override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {

    let CellId: NSString = "Cell"

    var cell: UITableViewCell = tableView?.dequeueReusableCellWithIdentifier(CellId) as UITableViewCell

    if let ip = indexPath {
        var data: NSManagedObject = myCustomers[ip.row] as NSManagedObject
        var addno = data.valueForKeyPath("custaddno") as String
        var addname = data.valueForKeyPath("custaddfirstline") as String
        cell.textLabel.text = "\(addno) \(addname)"
        var jcost = data.valueForKeyPath("custjobcost") as Float
        var jfq = data.valueForKeyPath("custjobfq") as Float
        var jfqtype = data.valueForKeyPath("custjobfqtype") as String
        cell.detailTextLabel.text = "Charge: \(jcost) to be done every \(jfq) \(jfqtype)"
    }
    return cell
}
问题 您以前可能忘记为单元格标识符注册一个类。请参阅
dequeueReusableCellWithIdentifier:
的文档:

讨论

在对任何单元格进行出列之前,请调用此方法或
registernb:forCellReuseIdentifier:
方法来告诉表视图如何创建新单元格。如果指定类型的单元格当前不在重用队列中,则表视图将使用提供的信息自动创建新的单元格对象

然后,该方法返回nil,Swift无法隐式展开可选的

解决方案 编码 要解决此问题,您可以像这样在
viewDidLoad
中调用
registerClass:forCellReuseIdentifier:
(请参阅)

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}
在界面生成器中 。。。或者,如果您使用的是故事板,则在选择UITableViewCell原型时,直接在属性检查器的Interface Builder中进行设置: