Swift 错误消息“在展开可选值时意外发现nil”,即使其单元格不是nil

Swift 错误消息“在展开可选值时意外发现nil”,即使其单元格不是nil,swift,xcode,Swift,Xcode,xcode:9.4.1 我正在创建一个简单的表视图,但我一直得到相同的结果 在展开可选值时意外发现nil 为每个单元格中的组件设置值时出错 import UIKit class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { @IBOutlet weak var conditionTable: UITableView! var conditions = [Conditi

xcode:9.4.1

我正在创建一个简单的表视图,但我一直得到相同的结果 在展开可选值时意外发现nil 为每个单元格中的组件设置值时出错

import UIKit

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    @IBOutlet weak var conditionTable: UITableView!

    var conditions = [Condition]()

    override func viewDidLoad() {
        super.viewDidLoad()

        conditionTable.register(ConditionCell.self, forCellReuseIdentifier: "conditionCell")
        conditionTable.delegate = self
        conditionTable.dataSource = self
        setInitData()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func setInitData() {
        conditions.append(Condition(name: "a"))
        conditions.append(Condition(name: "b"))
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return conditions.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell: ConditionCell = tableView.dequeueReusableCell(withIdentifier: "conditionCell") as? ConditionCell
            else {
                fatalError()
        }
        print(cell.conditionLabel.text)
//        cell.setCell(condition: conditions[indexPath.row])
        return cell
    }

}
我确实为我的自定义单元格命名了ConditionCell,也为标识的ConditionCell命名了

这是我的自定义单元类。 我确实向类添加了componentlabel引用。 看起来自定义视图类已成功加载,而不是nil 但是,其组件标签不是

import UIKit

class ConditionCell: UITableViewCell {
    @IBOutlet weak var conditionLabel: UILabel!

    func setCell(condition: Condition) {
        print(conditionLabel)
        conditionLabel.text = condition.name
    }

}

这一行的问题在于:

conditionTable.register(ConditionCell.self, forCellReuseIdentifier: "conditionCell")
它需要UINib。将其更改为:

conditionTable.register(UINib(nibName: "ConditionCell", bundle: nil), forCellReuseIdentifier: "conditionCell")
有关更多详细信息,请检查以下内容:


插座是否连接到故事板中的标签?请参阅此以创建自定义单元:如果单元是在Interface Builder中设计的,则不得注册该单元。然后拆下防护罩。。。法塔莱罗。强制展开单元格类型。一旦成功,就永远成功。不要用前导集命名方法……删除注册部分确实解决了问题。非常感谢你!