将对象追加到数组时,为什么会发生nil错误?

时间:2015-10-06 01:19:38

标签: ios swift

我认为我的应用程序崩溃的原因是因为没有将concert1添加到数组中,并且swift将其作为nil接收。我该如何解决这个问题?当我断点时,数组有0个对象。

var arrayOfConcerts: [ConcertsController] = [ConcertsController]()

override func viewDidLoad() {
    super.viewDidLoad()

    self.setUpConcerts()
    self.table1.dataSource = self

    self.table1.registerNib(UINib(nibName: "LiveConcertsCell", bundle: nil), forCellReuseIdentifier: "cell")

}

 func setUpConcerts(){
    let concert1 = ConcertsController(imageName: "ACL.png")

    arrayOfConcerts.append(concert1)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return arrayOfConcerts.count
}
  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = table1.dequeueReusableCellWithIdentifier("cell") as? CustomCellConcerts
    let concert = arrayOfConcerts[indexPath.row]
    cell!.setCell(concert.imageName)
    return cell!
}

以下是ConcertsController的代码

import UIKit
import Foundation
class ConcertsController{

var imageName = "blank"

init(imageName: String){
    self.imageName = imageName
   }
}

以下是CustomCellConcerts的代码

import UIKit

class CustomCellConcerts: UITableViewCell {
@IBOutlet weak var concertimage: UIImageView!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

func setCell(concertimage: String){
    self.concertimage.image = UIImage(named: concertimage)
}

}

1 个答案:

答案 0 :(得分:0)

如果我不得不猜测,那是因为您在代码中的某处使用UIImage初始化程序创建了init(named: String),这是一个可用的初始化程序(返回UIImage?)。然后,当初始化程序实际返回!时,该图像会被nil显式解包,因为它无法找到图像。只是一个猜测。查看您使用该图像的位置以及是否明确打开它。