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()。表未重新加载。 根据您的原始问题,这听起来合理且符合预期。如果您更改imageArray
而imagesList
是nil
,则不应调用reloadData()
方法。也就是说,我对我的答案做了一个小改动。以上是关于reloadData() 致命错误:在展开可选值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章
@IBInspectable 致命错误:在展开可选值时意外发现 nil