2016-06-07 3 views
-1

Я пытаюсь назначить изображение для разных специальностей в моем словаре ex SE, CS, по умолчанию, но каждый раз, когда я запускаю программу, он падает на меня. Я использую tableview и имею стиль подделки. Должен ли я сначала назначать специальности специалистам? Вот мой tableviewcontrollerПрисвоение изображения ключевому значению (Swift)

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

Какая строка сбоев, и что такое сообщение об аварийной консоли? В вашем коде много восклицательных знаков; каждый из них означает «Пожалуйста, разбивайте меня». Вы не можете быть удивлены, если это _does_ crash; ты просил об этом. – matt

+0

Спасибо за тонну, я не знал, что они оказывают такое влияние на код, удаляя их, а затем удаляя точки останова, это была проблема, и мой код не работал. –

ответ

0

Вы сила разворачивать эти образы, и если они не присутствуют в связке вашего приложения это приведет к краху. UIImageView «S 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 будет пустым, но, по крайней мере, он выиграл» t сбой.

+0

Спасибо, что была проблема. После удаления точек останова работала безупречно. –

Смежные вопросы