Сохранение объекта с использованием обратных связей области Swift

#swift #realm

#swift #область

Вопрос:

У меня проблема, когда я сохраняю данные, используя базу данных Realm в Swift.

У меня есть две сущности, называемые «MathSolutions», «Папка». В одной папке может быть несколько вопросов. Отношения один ко многим.

Объект MathSolutions

  class MathSolutions: Object {

    dynamic var question = ""
    dynamic var steps = ""
    dynamic var createdDate = NSDate()
    let solutions = List<Folders>()


    class func JSONInboundMappingDictionary() -> [String:String] {
        return [
            //"id": "id",
            "question"  : "question",
            "steps"     :"steps",
            "createdDate" : "createdDate",
            "solutions"     : "solutions"
        ]
    }
}
  

Класс папки

   class Folders: Object {
    dynamic var folderName: String = ""
    var folders = LinkingObjects(fromType: MathSolutions.self, property: "solutions")

}
  

Другая часть обработки

    let mathSolution = MathSolutions(value: ["question": answers.question,"steps":realmcrud.createJOSNString(answers),"createdDate":NSDate()] )
    realmcrud.saveMySolution(mathSolution,folder: folder!)



//MARK:-Save Solutions
func saveMySolution(mathSolutions:MathSolutions,folder: Folders){
    let realm = try! Realm()
    try! realm.write{
        mathSolutions.solutions.append(folder)
        realm.add(mathSolutions)
    }
}
  

Созданная папка работает нормально. проблема в том, что при сохранении MathSolutions я получил ошибку ниже.

Я всегда получаю ошибку ниже

2016-10-12 15:39:36.234 JIT[92648:1964826] *** Terminating app due to uncaught exception 'Invalid property name', reason: 'Property 'name' not found in object of type 'Folders''

Редактировать

Вызов части создания

  let realmcrud = RealmCURD();
            //let folder = Folders(value : ["id" : realmcrud.folderNextID(),"folderName":self.enteredFolderName])
            let folder = Folders(value : ["folderName":self.enteredFolderName])
            realmcrud.createFolder(folder)
  

Создать файл папки DB

    //MARK:-Create folder
func createFolder(folders: Folders){
    let realm = try! Realm()
    try! realm.write{
        realm.add(folders,update: false)
    }
}
  

Мое требование заключается в том, что у меня есть папки и объекты MathSolution,
— У меня есть список папок, или пользователь может создать новую папку, после чего они могут сохранить мои математические задачи в выбранной папке из списка.

  • Когда я сохранил, у меня возникла проблема выше.
  • Я выполнил это требование, используя концепцию первичного ключа на начальном этапе, она работала нормально [это полностью ранняя стадия, концепция первичного ключа означает — id наличие файлов в Folders и MathSolution классе сущности, укажите ссылку на папку, используя идентификатор, т.е. Когда я сохраняю проблемы, она переходит в MathSolution таблицу, как question , steps , id, createdDate та жекак таблица папок ‘ id, folderName ] но позже я решил использовать сопоставление объектов в тот раз, когда столкнулся с этой проблемой. это понятно? любое решение

Пожалуйста, есть идеи? пожалуйста, предложите

Комментарии:

1. Сохраняли ли вы Solution объекты раньше, когда свойство folderName действительно вызывалось name ?

2. Вы изменили свою схему? Если да, выполнили ли вы миграцию? Не могли бы вы также предоставить некоторый код, где Folders создается?

3. @ezcoding Нет. Первоначально я разрабатывал с использованием идентификатора и первичного ключа, позже моя команда предложила отказаться от концепции первичного ключа. Итак, я изменил код, но удалил приложение из эмулятора и установил снова. У меня нет ничего, что называется name

4. @Dmitry. Я не менял имя схемы, но изначально разрабатывал с концепцией первичного ключа с идентификатором, а затем удалил эту часть и добавил сопоставление объектов между двумя таблицами. Я отредактирую свой вопрос и поделюсь кодом создания папки.

5. К сожалению, до сих пор не ясно, что там происходит, не могли бы вы поделиться полной трассировкой стека? или, что еще лучше, пример проекта, который воспроизводит эту проблему?