我正在尝试实现一个通用助手来保存自定义对象 .
这个想法是什么?使用id和对象列表保存容器模型(通用对象)
所以我可以使用id和我想要保存的对象列表来保存数据 .
然后,如果我想获取这些对象,我将使用容器的id调用getData .
我为什么需要那个?因为我的对象并不总是id,所以我需要使用公共标识符对其进行分组 . 所以在获取之后我会得到这样的东西:
对象容器(例如:人):
Container.id = 123
Container.objects = List<Person>
并且... What is the problem? 使用"Realm Browser"我可以意识到通用对象列表没有保存 .
执行以下步骤后:
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)
}
}
}
所以..我认为我的数据库没有保存对象数组...你是怎么回事?
如果您需要更多信息,请与我们联系 .
谢谢和良好的编码 .