将图像分配给键值(Swift)

时间:2016-06-07 14:54:22

标签: swift uitableview dictionary uiimageview

我正在尝试为我的字典中的不同专业分配一个图像,例如SE,CS,默认但是每次我运行该程序时它都会崩溃。我正在使用tableview并且具有轻微的风格。我应该先给专业指定一些东西吗?这是我的tableviewcontroller

import UIKit
class ClassRosterTableViewController: UITableViewController {

    var studentsList = [Dictionary<String, String>]()

    override func viewDidLoad() {
        super.viewDidLoad()

        let myStudentRoster = ClassRosterModel()
        studentsList = myStudentRoster.studentsRoster
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("studentCell", forIndexPath: indexPath)

        // Configure the cell...
        cell.textLabel?.text = studentsList[indexPath.row]["name"]
        cell.detailTextLabel?.text = studentsList[indexPath.row]["number"]
        print("Student's name: \(studentsList[indexPath.row]["name"])")
        print("Student's number: \(studentsList[indexPath.row]["number"])")
        print("Student's email: \(studentsList[indexPath.row]["email"])")

        if let major = studentsList[indexPath.row]["major"] {
            switch (major) {
            case "SE":

                cell.imageView?.image =  UIImage(named:"SE")!

            case "CS":

                cell.imageView?.image =  UIImage(named:"CS")!
            default:
                cell.imageView?.image =  UIImage(named:"default")!
            }
        }

        return cell
    }


//here is my separate class for the studentslist

import Foundation

class ClassRosterModel {

    var studentsRoster = [Dictionary<String, String>] ()
    init () {

        studentsRoster.append(["name": "Kaczynski, Alex", "major" : "SE", "email" : "s\(rand1)@monmouth.edu", "currentTerm" : "Spring", "numberOfCredits" : "\(rand2)" ])
        studentsRoster.append(["name": "O'Rore, Ryan", "major" : "SE", "email" : "s\(rand1)@monmouth.edu", "currentTerm" : "Fall", "numberOfCredits" : "\(rand2)" ])
    }
}

1 个答案:

答案 0 :(得分:0)

您正在展开这些图片,如果它们不在你的应用程序包中,它就会崩溃。 UIImageView image属性是可选的,因此分配这些图片时无需解开它们就可以了:

    if let major = studentsList[indexPath.row]["major"] {
        switch (major) {
        case "SE":
            cell.imageView?.image =  UIImage(named:"SE")
        case "CS":
            cell.imageView?.image =  UIImage(named:"CS")
        default:
            cell.imageView?.image =  UIImage(named:"default")
        }
    }

注意:如果您的图片中没有图片,那么您的imageView将为空,但至少它不会崩溃。