线程 1 EXC 错误
Posted
技术标签:
【中文标题】线程 1 EXC 错误【英文标题】:Thread 1 EXC error 【发布时间】:2017-08-21 00:31:24 【问题描述】:我一直在创建一个 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
// 错误如下:线程 1 exc_bad_instruction (code=exc_i386_invop subcode=0x0) 让 label2 = cell.viewWithTag(2)as! UIL标签 label2.text=posts[indexPath.row].message
return cell
【问题讨论】:
Swift 区分大小写。 所以,我更正了语法错误,但最终在下面一行出现错误。它说“线程 1 exc_bad_instruction (code=exc_i386_invop subcode=0x0)”知道这是什么意思吗? 它不能在两条线上都崩溃...告诉我们它在哪条线上崩溃? 【参考方案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!
别忘了在界面构建器中为单元格设置自定义类
【讨论】:
我没有投反对票,但这个问题应该作为错字关闭 所以,我更正了语法错误,但最终在下面一行出现错误。它说“线程 1 exc_bad_instruction (code=exc_i386_invop subcode=0x0)”知道这是什么意思吗? 您似乎正在尝试访问可能不是 UILabel 的插座。通过进行可选的投标来检查这一点:let label2 = cell.viewWithTag(2) as? UILabel 并使用断点检查该标签。可能为零。此外,最好使用具有两个标签的自定义单元格作为出口,然后在 cellForRowAt 方法中将该自定义单元格出列以上是关于线程 1 EXC 错误的主要内容,如果未能解决你的问题,请参考以下文章
错误:“线程 1:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)
Swift,线程 1:EXC_BAD_INSTRUCTION 错误
Swift 错误 - 线程 1:EXC_BAD_INSTRUCTION
错误“线程 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)”是啥意思?