我有一个TableView,它从Realm数据库中获取数据。现在我想选择多行,我想给它们一个复选标记并设置"选择"练习的属性为" true"。 但是,如果我在这里尝试此代码,我会收到SIGABRT错误。我已经研究过这个错误,并发现当我在故事板中设置错误的Outlets或者我没有设置重用标识符时,就会发生这种情况。我检查过这个但是一切都还好。如果故事板配置正确,有谁知道这个错误可以来自哪里? (对不起,我的英语不好) 这是我的代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if fromTrainingPlan == true && request2 != nil{
tableView.deselectRow(at: indexPath, animated: true)
let excercises = request2![(indexPath as NSIndexPath).row]
let cell: UebungenTableViewCell = tableView.cellForRow(at: indexPath) as! UebungenTableViewCell
if excercises.selected == true{
excercises.selected = false //Crash
print("1")
}
else{
excercises.selected = true
print("2")
}
if excercises.selected == true{
cell.accessoryType = .checkmark
print("3")
}
else{
cell.accessoryType = .none
print("4")
}
}
}
我使用断点来分隔错误,我发现exercise.selected = false语句会导致错误,但我不知道为什么.. 顺便说一句:只有第一个if else条件导致错误,第二个不会导致程序崩溃。
这是练习课:
class Excercise: Object {
dynamic var trainingsplan: TrainingPlan?
dynamic var selected = false
dynamic var name = ""
dynamic var excerciseDescription = ""
dynamic var muscleGroup = ""
dynamic var record = 0
dynamic var picture: NSData?
let sets = List<TrainingSet>()
}
request2的数据类型为Results [Excercise]?。