加载库存表视图时出现致命错误(发现为零)

Posted

技术标签:

【中文标题】加载库存表视图时出现致命错误(发现为零)【英文标题】:Fatal error (found nil) while loading stock tableView 【发布时间】:2016-02-23 12:19:18 【问题描述】:

我在ViewController 中创建了基本的tableView,在加载时我得到了

致命错误:在展开可选值时意外发现 nil

它指向tableView.delegate = self(指向我的意思是这条线在Xcode中以绿色突出显示)。这是完整的代码:导入 UIKit

import UIKit

class FAQViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UINavigationControllerDelegate, SWRevealViewControllerDelegate 

    @IBOutlet var menuButton: UIBarButtonItem!
    @IBOutlet var tableView: UITableView!

    override func viewDidLoad() 
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self

        if revealViewController() != nil 
            //I have SWRevealController that slides viewController from Left side
                
    

    func numberOfSectionsInTableView(tableView: UITableView) -> Int 
        return 1
    

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return 5
    

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

        let cell = tableView.dequeueReusableCellWithIdentifier("FAQ") as! FAQTableViewCell
        cell.questionLabel.text = "Here goes Question"
        cell.answearLabel.text = "This is answear"

        return cell
    

【问题讨论】:

它在 tableview 上崩溃了吗? 检查你在 .storyboard、Xib 或代码中指定的单元重用标识符,并确保在出列时它是正确的 标识是正确的,我已经仔细检查过。当我打开这个视图时它确实崩溃了。如果我删除 .delegate 和 .dataSource - 没有崩溃,但也没有单元格。 【参考方案1】:

从您的示例中可以看出,您似乎正在使用情节提要进行设置,但是由于该类是 UIViewController 而不是 UITableViewController,因此我认为您的连接未正确连接。

我会检查调试器以确保 tableView 不为零,并检查情节提要以确保连接看起来正常。

您还可以通过右键单击 tableView 来连接 tableViews 数据源和故事板中的委托,然后从数据源或委托对面的圆圈拖动到与您的故事板场景关联的视图控制器(即层次结构中的第一个图标故事板文件中场景名称的正下方)。

很高兴澄清这是否没有意义......

【讨论】:

【参考方案2】:

检查以下内容:

检查在.storyboardXib 或代码中指定的单元重用标识符,并确保在出列时它是正确的。

否则会出现致命错误,应用程序崩溃。

【讨论】:

我在发帖前做的第一件事——仔细检查所有标识符是否正确,是否存在拼写错误,是否使用了正确的 UITableViewCell【参考方案3】:

您已将 tableView 声明为隐式展开。这意味着 this 必须在为其赋值之前进行初始化。我猜你刚刚声明了 tableView 但没有连接到故事板。

我不希望这种方式将其声明为可选并在设置数据源和委托之前对其进行初始化。

【讨论】:

以上是关于加载库存表视图时出现致命错误(发现为零)的主要内容,如果未能解决你的问题,请参考以下文章

表视图错误致命错误:加载文件时索引超出范围

在视图控制器之间进行 segue 时出现致命错误

使用外部表时出现“表视图不存在”错误

尝试从外部模态视图控制器调用视图控制器函数时出现致命错误

UIview中的两个表视图致命错误

问题:我的非可选变量为零。 (展开时出现致命错误)