我一直在创建一个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
}
}
答案 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!
}
并且不要忘记在界面构建器
中为单元格设置该自定义类