ios - Swift 类 Data 和 UITableViewController 运行时错误

标签 ios swift uitableview

我遇到运行时错误。我刚读过“使用 Swift 进行应用程序开发”

"Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value"

请帮忙,我已经熟悉 if let 条件绑定(bind),但不确定在这种情况下我必须在哪里使用它才能显示我的 UIImage 。

对于 swift 和 IOS 来说仍然是全新的 标识符已设置, Storyboard上的 tableViewController 也设置为 MammaSitaTableViewController

我可以让文本属性本身显示在屏幕上,但前提是我取消图像属性。

class MammaSitaTableViewController: UITableViewController {

var mammaSitas : [MammaSita] =
    [
        MammaSita(name: "Megan Fox", photo: UIImage(contentsOfFile: "Megan.jpg")! ),
        MammaSita(name: "Scarlet Johanson", photo: UIImage(contentsOfFile: "Scarlet.jpg")! ),
        MammaSita(name: "Bella Hadid", photo: UIImage(contentsOfFile: "Bella.jpg")! )

    ]   // end of delcared array mammaSitas
 }          


 // MARK: - Table view data source
//numberOfSections Optional
override func numberOfSections(in tableView: UITableView) -> Int {

    return 1
}

//
// numberOfRowsInSection manditory to use dataSource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    if section == 0 {
        return mammaSitas.count
    } else {
        return 0
    }

}

//
// cellForRowAtIndexPath manditory to us dataSource
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    //1 dequeueReusableCell
    let cell = tableView.dequeueReusableCell(withIdentifier: "WomenCell", for: indexPath)

    //2 fetch model object to be displayed
   let mamaCita = mammaSitas[ indexPath.row ]

    //3 configure cells properties
    cell.textLabel?.text = "\(mamaCita.name)"
    cell.imageView?.image = mamaCita.photo 

    //4 return cell
    return cell
}

最佳答案

您可以通过以下方式使用条件绑定(bind)...

var mammaSitas = [MammaSita]()
    if let img = UIImage(contentsOfFile: "Megan.jpg") {
        let obj = MammaSita(name: "Megan Fox", photo: img)
        mammaSitas.append(obj)
    }

    if let img = UIImage(contentsOfFile: "Scarlet.jpg") {
        let obj = MammaSita(name: "Scarlet Johanson", photo:  img)
        mammaSitas.append(obj)
    }

    if let img = UIImage(contentsOfFile: "Bella.jpg") {
        let obj = MammaSita(name: "Bella Hadid", photo: img)
        mammaSitas.append(obj)
    }

如果您的图像资源中有图像,那么您需要使用以下命令来获取图像。

 let img = UIImage(named: "Megan.jpg")

您正在使用 contentsOfFile: 来获取图像,因此可能应该有一个图像路径而不是图像名称(例如“Megan.jpg”)。

let img = UIImage(contentsOfFile: <#imagePath#>) //not the image name "Megan.jpg"

希望有帮助:)

关于ios - Swift 类 Data 和 UITableViewController 运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285711/

相关文章:

ios - 制作自定义文本字段

ios - UITableView重复重复单元格

iphone - 场景之间切换会卡住触摸

ios - 使用 xcode 模拟器 IOS 5 测试 ipad 2 摄像头

ios - 检查当前是否使用定位服务

swift - 如何在 OSX 应用程序中的本地主机上设置 HTTP 监听器

swift - 如何在 IF 条件下获取枚举的参数值?

iphone - 如何在选择时保留 UITableViewCell 中的 subview 背景颜色或为其设置动画?

ios - 将数据从自定义 UITableViewCell 发送到详细信息 ViewController - Swift

ios - Cocos2D/iOS7 : continuously increasing memory usage for boilerplate code