Сохранение родительских дочерних объектов в Realm Swift - PullRequest
0 голосов
/ 14 марта 2019

У меня есть следующие модели областей и класс провайдеров для сохранения данных в db области.

Это должно сохранить данные для RealmFormPalette, RealmParentPalette & RealmTextPalette.Но он сохраняет только данные первых 2, т. Е. RealmFormPalette, RealmParentPalette.

. Я создал RealmTextPalette, чтобы добавить какое-либо свойство поверх RealmParentPalette.Таким образом, я создал больше палитр, таких как RealmDatePalette, RealmNumberPalette, которые имеют минимальное и максимальное значения.

class RealmFormPalette: RealmBaseModel {
    @objc dynamic var projectId = ""
    @objc dynamic var formId = ""
    @objc dynamic var imageRoute: String?
    let palettes = List<RealmParentPalette>()

    static func from(_ domainObj: FormFieldDomainObj) -> RealmFormPalette {
        let model = RealmFormPalette()
        model.projectId = domainObj.projectId
        model.formId = domainObj.formId
        model.imageRoute = domainObj.imageRoute

        for paletteDomainObj in domainObj.palettes {
            let palette = RealmTextPalette.from(paletteDomainObj as! TextPaletteDomainObj)
            model.palettes.append(palette.palette!)
        }

        return model
    }
}

class RealmParentPalette: RealmBaseModel {
    @objc dynamic var fieldId = ""
    @objc dynamic var type = ""
    @objc dynamic var question = ""

    static func from(_ object: ParentPaletteDomainObj) -> RealmParentPalette {
        let model = RealmParentPalette()
        model.fieldId = object.fieldId
        model.type = object.type
        model.question = object.question
        return model
    }
}


class RealmTextPalette: Object {
    let maxLength = RealmOptional<Int>()
    @objc dynamic var palette: RealmParentPalette?

    static func from(_ object: TextPaletteDomainObj) -> RealmTextPalette {
        let model = RealmTextPalette()
        model.palette = RealmParentPalette.from(object)
        model.maxLength.value = object.maxLength
        return model
    }
}

class FormFieldDbProvider {
    func insert(form: FormFieldDomainObj) {
        try! getInstance().write {
            getInstance().add(RealmFormPalette.from(form))
        }
    }
}
...