Я занимаюсь разработкой приложения с использованием Realm.В какой-то момент в моем приложении, когда я пытаюсь манипулировать своей моделью, мое приложение неожиданно зависло.Вот что сказала трассировка стека
Может только добавлять, удалять или создавать объекты в области в транзакции записи - сначала вызовите beginWriteTransaction для экземпляра RLMRealm
Что я пытаюсь сделать:
Давайте разберем мою проблему по частям. Ниже приведена моя модель приложения
@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
}
Теперь я пытаюсь получить списоквсе классы, как это из области (после сохранения их в области)
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)
}
}
** В приведенном выше коде вы можете видеть, что я собираюданные от имени идентификаторов и сохранение результирующих массивов в модели.Итак, я получаю сообщение об ошибке в следующей строке **
teacherModel.Students = studentsList[0]
Теперь я действительно не понимаю, почему это происходит?Я не сохраняю данные в области, я сохраняю в своей модели, но все равно получаю ошибку.