线程1 EXC错误

时间:2017-08-21 00:31:24

标签: swift uitableview

我一直在创建一个firebase数据库,但我有一个错误,我无法通过。它说:

  

线程1 exc_bad_instruction(code = exc_i386_invop subcode = 0x0)'

我只是看起来很简单。任何想法?

这是代码&错误在代码行上:

//
//  Database.swift
//  intern
//
//  Created by Lani  Daniels on 8/20/17.
//  Copyright © 2017 Lani  Daniels. All rights reserved.
//

import UIKit
import Firebase
import FirebaseDatabase

struct PostStruct {
    let title: String
    let message: String
}

class DatabaseViewController: UITableViewController {
    var posts: [PostStruct] = []

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableview.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        let label1 = cell.viewWithTag(1)as! UILabel
        label1.text=posts[indexPath.row].title

// ERROR BELOW:thread 1 exc_bad_instruction(code = exc_i386_invop subcode = 0x0)             让label2 = cell.viewWithTag(2)为!的UILabel             label2.text =帖[indexPath.row] .message

        return cell
    }
}

1 个答案:

答案 0 :(得分:-1)

第一个错误:

let cell = tableview.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

将tableview更改为tableView

对于第二个: 您似乎正在尝试访问可能不是UILabel的插座。通过制作可选的招标来检查这一点:

let label2 = cell.viewWithTag(2) as? UILabel 

并使用断点检查该标签。它可能是零。

最好使用带有两个标签的自定义单元格类作为出口,然后在cellForRowAt方法中将该自定义单元格出列:

class CustomCell: UITableViewCell {
        @IBOutlet weak var firstLabel: UILabel!
        @IBOutlet weak var secondLabel: UILabel!
}

然后

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableview.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? CustomCell

        cell?.firstLabel.text=posts[indexPath.row].title
        cell?.secondLabel.text=posts[indexPath.row].message

    return cell!
}

并且不要忘记在界面构建器

中为单元格设置该自定义类