TableViewController didSelectRowAt SIGABRT错误(没有错误的连接)

时间:2016-11-17 13:39:43

标签: swift uitableview realm sigabrt

我有一个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]?。

0 个答案:

没有答案