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

Per*_*Liu 5 uitableview reloaddata ios swift xcode6

应用程序在线时崩溃 在此输入图像描述

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
  }
Run Code Online (Sandbox Code Playgroud)

}

我跟踪发现崩溃发生时 imageList 为零。这是一个在 Storyboard 上创建的带有 UITableView 的自定义单元格。谁能告诉我我可以尝试的可能解决方案?

Dan*_* T. 3

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

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
    }

}
Run Code Online (Sandbox Code Playgroud)