swift - fatal error at runtime with Realm using LInkingOjbects -
getting following fatal error.
fatal error: 'try!' expression unexpectedly raised error: error domain=io.realm code=1 "schema validation failed due following errors: - property 'gearmodel.category' declared origin of linking objects property 'categoryrepository.gearlist' links type 'categorymodel'" userinfo={nslocalizeddescription=schema validation failed due following errors: - property 'gearmodel.category' declared origin of linking objects property 'categoryrepository.gearlist' links type 'categorymodel', error code=1}:
object models here: gear model assigned 1 category
import foundation import realmswift class gearmodel: object{ dynamic var gearid = nsuuid().uuidstring dynamic var name = "" dynamic var manufacturer = "" dynamic var sortorder = 0 dynamic var category: categorymodel? override class func primarykey() -> string? {return "gearid"} }
category model: trying list of gearmodel items category assigned.
import foundation import realmswift class categorymodel: object{ dynamic var categoryid = nsuuid().uuidstring dynamic var sortorder = 0 dynamic var name = "" let gearlist = linkingobjects(fromtype: gearmodel.self, property: "category") override class func primarykey() -> string? {return "categoryid"} }
category repository class: fatal error occurs on line "let realm =...." in allcategories() func
import foundation import realmswift class categoryrepository: categorymodel{ class func getgearitemsforcategory(categoryid: string) -> results<gearmodel> { let realm = try! realm() var gearitems = realm.objects(gearmodel.self) let predicate = nspredicate(format: "categoryid = %@", categoryid) gearitems = gearitems.filter(predicate) return gearitems } class func getcountofgearitems(categoryid: string) -> int { let realm = try! realm() var gearitems = realm.objects(gearmodel.self) let predicate = nspredicate(format: "categoryid = %@", categoryid) gearitems = gearitems.filter(predicate) return gearitems.count } class func addcategory(categoryid: string, name: string, sortorder: int){ let realm = try! realm() let category = categorymodel(name: categoryid, categoryid: name, sortorder: sortorder) try! realm.write { realm.add(category) } } class func allcategories() -> results<categorymodel> { let realm = try! realm() return realm.objects(categorymodel.self).sorted(byproperty: "sortorder") }
inheriting class has linkingobjects
properties not supported.
object , list properties in realm not covariant, meaning can point specified class, , not subclasses of class. means gearmodel.category
cannot link categoryrepository
objects, categoryrepository
has inherited gearlist
property trying list gearmodel
objects link it.
in specific case, it's not clear why categoryrepository
inheriting categorymodel
.
Comments
Post a Comment