Storage of a base subclass in Realm

Is it possible to save a specific general subclass in Realm?

For instance:

class MyClass<T> : Object{}

class ConcreteMyClass : MyClass<String> {}

I know that it is not possible to save MyClass in Realm. However, is it possible to somehow save ConcreteMyClass ?

+4
source share
1 answer

Yes, you can use specific general subclasses for Realm models, you just need to tell Realm to ignore non-specialized classes:

import Cocoa
import RealmSwift

class MyClass<T>: Object {
    dynamic var parentProp = 0
    required init() {
        super.init()
    }
}

class ConcreteMyClass: MyClass<String> {
    dynamic var childProp = 0
    required init() {
        super.init()
    }
}

let realm = try! Realm(configuration: Realm.Configuration(objectTypes: [ConcreteMyClass.self]))
try! realm.write {
    realm.add(ConcreteMyClass())
}

print(realm.objects(ConcreteMyClass.self))

These are the logs:

Results<ConcreteMyClass> (
    [0] ConcreteMyClass {
        parentProp = 0;
        childProp = 0;
    }
)
+1
source

Source: https://habr.com/ru/post/1652157/


All Articles