Это мой код:быстр опущенный вопрос от суперкласса к подклассу
class Student {
var name: String?
init (name: String) {
self.name = name
}
}
class MasterStudent: Student {
var degree: String?
init(name: String, degree: String) {
self.degree = degree
super.init(name: name, degree: degree)
}
}
fun updateStudent(stu: Student) {
var count = 0
for st in studentArray {
if (st.id == stu.id) {
studentArray.removeAtIndex(count)
st as! MasterStudent //thread 1 signal :SIGABRT
studentArray.append(stu)
}
count += 1
}
}
Если я прохожу функцию updateStudent
Student
объекта, приведение к MasterStudent
результатам в аварии. Я хочу превратить объект Student
в объект MasterStudent
.
благодарит
Просто нарежьте эту линию. Линия не имеет смысла (бросок сам по себе ничего не делает), и у вас нет причин бросать в любом случае. – matt
Я думаю, что ваше неправильное использование базового программирования ООП. MasterStudent наследует от Student, поэтому ваш ** принудительный downcast ** МОЖЕТ привести к сбоям. Проще говоря, вы не можете ВСЕГДА преуменьшать от Студента до MasterStudent. – dfd