これは私のコードです:私は機能updateStudent
Student
オブジェクト、クラッシュMasterStudent
結果へのキャストを渡すと迅速なダウンキャストの問題は、サブクラス化する
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
}
}
。 Student
オブジェクトをMasterStudent
オブジェクトに変えたいと思います。あなたが唯一のダウンキャストst
MasterStudent
にすることができます
おかげ
その行をカットしてください。このラインは無意味です(それだけでは何もしません)。どんな場合でもキャストする理由はありません。 – matt
私はあなたの誤った基本的なOOPプログラミングを考える。 MasterStudentはStudentから継承しますので、強制的にダウンキャストするとクラッシュする可能性があります。単に学生からMasterStudentへのダウンキャストはいつでも可能です。 – dfd