我正在尝试实现一个通用助手来保存自定义对象 .

这个想法是什么?使用id和对象列表保存容器模型(通用对象)

所以我可以使用id和我想要保存的对象列表来保存数据 .

然后,如果我想获取这些对象,我将使用容器的id调用getData .

我为什么需要那个?因为我的对象并不总是id,所以我需要使用公共标识符对其进行分组 . 所以在获取之后我会得到这样的东西:

对象容器(例如:人):

Container.id = 123
Container.objects = List<Person>

并且... What is the problem? 使用"Realm Browser"我可以意识到通用对象列表没有保存 .

Look at this picture

执行以下步骤后:

let person1 = Person()
    person1.cargarValores(number: "1", ord: 123)
    let person2 = Person()
    person2.cargarValores(number: "2", ord: 643)

    var people = Array<Person>()
    people.append(person1)
    people.append(person2)

    let container = Container(identificator: "123", lista: people)
    let helper = RealmHelper<Person>()
    helper.guardarBaseLocal(id: "123", objeto: people)

    let datos = helper.getData(ofType: Contenedor<Person>.self, withFilter: "number = '123'")
    let example = datos?.first?.modelo?.first?.number
    print("number : " + example!)

我收到此错误:

由于未捕获的异常“无效的属性名称”而终止应用程序,原因:在'TtGC1110ContenedorCS_5Person'类型的对象中找不到'属性'号'

Container.swift

import Foundation
import RealmSwift

class Container<T> : Object{
    @objc dynamic var id : String = ""
    var models : Array<T>? = nil

    convenience init(identificator : String, lista : Array<T>) {
        self.init()
        self.id = identificator
        self.models = lista

    }

}

Person.swift

class Person : Object {
    @objc dynamic var number = "0"
    @objc dynamic var ord = 0

    func Person(number: String, ord: Int) {
        self.number = number
        self.ord = ord
    }

    func cargarValores(number: String, ord: Int) {
        self.number = number
        self.ord = number
    }
}

RealmManager.swift

import RealmSwift

class RealmHelper<T> {

    var objeto : T?

    init() {
        self.objeto = nil
    }

    func RealmHelper(objecto: T) {
        self.objeto = objecto
    }

    func getData<T:Object>(ofType: T.Type, withFilter: String) -> Results<T>? {
        let realm = try! Realm()
        return realm.objects(T.self).filter(withFilter)
    }

    func saveData(id: String, objeto: Array<T>) {
        let container = Container(identificator:id, lista:objeto )
        let realm = try! Realm()

        try! realm.write() {
            realm.add(container)
        }
    }


}

所以..我认为我的数据库没有保存对象数组...你是怎么回事?

如果您需要更多信息,请与我们联系 .

谢谢和良好的编码 .