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

Posted

技术标签:

【中文标题】reloadData() 致命错误:在展开可选值时意外发现 nil【英文标题】:reloadData() fatal error: unexpectedly found nil while unwrapping an Optional value 【发布时间】:2014-12-04 13:57:58 【问题描述】:

应用程序在上线时崩溃

class ImageValueCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource 

@IBOutlet weak var imagesList: UITableView!
  var imageArray: NSArray!

override func awakeFromNib() 
    //super.awakeFromNib()
    // Initialization code
    imagesList.delegate = self;
    imagesList.dataSource = self;
    imageArray = NSArray()
    imagesList.reloadData()


func addImagesValue(objectList: NSMutableArray, machine: WIFIMachine)
    imageArray = objectList
    imagesList.reloadData() //CRASHED HERE
  

我追踪并发现崩溃发生时 imageList 为 nil 。这是一个自定义单元格,在情节提要上创建了一个 UITableView。谁能告诉我我可以尝试的可能解决方案?

【问题讨论】:

检查你的 imagesList 是否不为零 【参考方案1】:

如果您在调用awakeFromNib 之前调用addImagesValue,那么您的代码将清空数组。我不认为那是你想要的。这是一个更好的解决方案:

class ImageValueCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource 

    @IBOutlet weak var imagesList: UITableView!
    var imageArray: NSArray = NSArray() 
        didSet 
            // whenever the imageArray changes, reload the imagesList
            if let imagesList = imagesList 
                imagesList.reloadData()
            
        
    

    override func awakeFromNib() 
        // why isn't the below done from inside the nib file? That's how I would do it.
        imagesList.delegate = self
        imagesList.dataSource = self
        imagesList.reloadData()
    

    func addImagesValue(objectList: NSMutableArray, machine: WIFIMachine)
        imageArray = objectList
    


【讨论】:

嗨,我设法摆脱了错误。然而,当 imageArray 的大小从 0-1 增加时,永远不会调用 imagesList.reloadData()。表未重新加载。 根据您的原始问题,这听起来合理且符合预期。如果您更改imageArrayimagesListnil,则不应调用reloadData() 方法。也就是说,我对我的答案做了一个小改动。

以上是关于reloadData() 致命错误:在展开可选值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章

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

为啥我收到错误:致命错误:在展开可选值时意外发现 nil?

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

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

swift 2 致命错误:在展开可选值时意外发现 nil - 类别名称

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