2016-10-10 2 views
1

Это где встречающаяся ошибка, на selectedStudent линии пусть,Тема 1:. EXC_BAD_INSTRUCTION (код = EXC_I386_INVOP ошибка .. не совсем уверен, почему

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
    if(segue.identifier == "Student_segue") { 
     if let indexPath = self.tableView.indexPathForSelectedRow { 
      let selectedStudent = studentsSorted[indexPath.row] 
      let destination = segue.destinationViewController as! StudentInfoTableViewController 
      destination.selectedStudent = selectedStudent 
     } 
    } 

} 

Вот где я объявляю studentsSorted и studentArray

typealias studentInfo = Dictionary<String, AnyObject> 
typealias studentArray = [studentInfo] 

let students = StudentRosterModel() 
var studentsSorted:studentArray = studentArray() 
var selectedRow:Int = 0 

func updateStudentInfo(updatedStudent: Dictionary<String, AnyObject>) { 

    // replaced the selected row with the updated key/value dictionary 

    studentsSorted [selectedRow ] = updatedStudent 

    // sort the revised student list 
    studentsSorted.sortInPlace{ ($0["last_name"] as? String) < ($1["last_name"] as? String)} 

    // reload() tableView to show refreshed view 

    tableView.reloadData() 


} 

и это, где я объявляю selectedStudent,

class StudentInfoTableViewController: UITableViewController, UITextFieldDelegate { 

var selectedStudent: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>() 
var delegate: studentUpdate? 

Действительно путать здесь, я бы если кто-то может мне помочь.

ответ

1

Тема 1: EXC_BAD_INSTRUCTION

Эта ошибка почти печати ошибки в лог консоли. Я знаю, что эта ошибка может возникнуть из-за ошибки диапазона.

if let indexPath = self.tableView.indexPathForSelectedRow { 
    let selectedStudent = studentsSorted[indexPath.row] 
    let destination = segue.destinationViewController as! StudentInfoTableViewController 
    destination.selectedStudent = selectedStudent 
} 

Если вы declear self.tableView.indexPathForSelectedRow в indexPath и удастся, то вы считаете indexPath.row находится над или под на studentsSorted размер «s.

+0

Да, я обнаружил, что в массиве studentsSorted ничего нет, но не могу понять, почему. – Grady

+0

Нет информации о функции, которая вставляет данные в 'studentsSorted'. Я могу найти только «updateStudentInfo», которые просто заменяют и сортируют. – NEWBIE

+0

Можете ли вы показать мне, как вставлять данные в 'studentsSorted'? – NEWBIE

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