我正在尝试为我的字典中的不同专业分配一个图像,例如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)" ])
}
}
答案 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将为空,但至少它不会崩溃。