ios - 当我尝试在我的模型中保存数据时应用程序崩溃

标签 ios swift realm

我正在使用 Realm 开发应用程序。在我的应用程序中的某个时刻,当我尝试操纵我的模型时,我的应用程序以意外的方式崩溃了。这是堆栈跟踪所说的内容

Can only add, remove, or create objects in a Realm in a write transaction - call beginWriteTransaction on an RLMRealm instance first

我正在尝试做的事情:

让我们分解我的部分问题。以下是我的应用程序模型

@objcMembers public  class ClassGroup : Object , Codable  {

dynamic var   Id : Int? = ""
dynamic var   ClassName : String? = ""
dynamic var   TeacherId : Int = 0
dynamic var   Teachers : [TeacherMdoel]? =  []


}

@objcMembers public  class TeacherModel : Object , Codable  {

dynamic var   Id : String? = ""
dynamic var   Name : String? = ""
dynamic var   ClassId : Int = 0
dynamic var   Students : [StudentClass]? =  []

}

@objcMembers public  class StudentModel : Object , Codable  {

dynamic var   Id : String? = ""
dynamic var   Name : String? = ""
dynamic var   ClassId : Int = 0
dynamic var   TeacherId : Int = 0

}

现在我试图从 Realm 中获取所有类的列表(将它们保存到 Realm 之后)

let mClassLists = mDbHelper.realmObj.objects(ClassGroup.self)

现在我得到异常/错误。我正在做的是,我试图用包含上述所有模型的一些数据填充我的 UITableView。我正在获取数据并将它们保存在我的模型中并尝试将该列表提供给 UITableView 但我的应用程序因我上面提到的错误而崩溃

let mClassLists = mDbHelper.realmObj.objects(ClassGroup.self)

let classLists = Array (mClassLists)

for classModel in classLists {


            let resultPredicateTeachers = NSPredicate(format: "ClassId == %@", classModel.Id)

            let mTeachersList = mDbHelper.realmObj.objects(TeacherModel.self).filter(resultPredicateTeachers)

            if(mTeachersList.count > 0){

                var listTeachers : [TeacherModel] = []

                for teacherModel in mTeachersList {

                    let resultPredicateStudent = NSPredicate(format: "TeacherId == 29")
                    let mStudentList = mDbHelper.realmObj.objects(StudentModel.self).filter(resultPredicateStudent)

                    if(mStudentList.count > 0){

                        let studentsList = Array(mStudentList)

                        teacherModel.Students = studentsList[0]
                    }

                    listTeachers.append(savedDetailItem)
                }

                classModel.Teachers? = (listTeachers)



                listClassModel.append(classModel)

            }



        }

**在上面的代码中,您可以看到我正在代表 ID 收集数据并将结果数组保存在模型中。所以我在以下行中收到错误 **

 teacherModel.Students = studentsList[0]

现在我真的不明白为什么会这样?我没有在 Realm 中保存数据,而是在我的模型中保存数据,但仍然出现错误。

最佳答案

在Realm数据库中,如果要修改任何模型(保存新数据或更新),操作应该在写事务中执行:

try! realm.write {
    realm.add(<your_model_objects>)
}

关于ios - 当我尝试在我的模型中保存数据时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52585300/

相关文章:

java - 按相关性对 RealmResults 进行排序

ios - 共享 .xcarchive 安全吗?

ios - 在 shouldPerformSegue 中显示 UIAlertViewController

IOS11.0.3 UIActivityViewController 复制链接事件复制URL两次

ios - 以编程方式快速将数据从一个 View 传递到另一个 View

ios - 将对象存储到 RealmSwift 中的列表后的 EXC_BAD_ACCESS

javascript - Phonegap,Cordova - 插件问题

ios - 水平 StackView 的正确对齐和分布选择

ios - 有没有办法在 firebase 中运行 Node 脚本?

database - OS X 应用程序。哪种是存储数据的最佳方式?