user2585030
user2585030

Reputation:

Confusion why Realm LinkingObjects() isn't working :(

I have defined two very basic Object as follows:

class Language: Object {
    dynamic var id: String = "" //"english", "chinese"
    let versions = List<Version>()

    convenience init(id: String, versions: [Version]) {
        self.init()
        self.id = id
        self.versions.append(objectsIn: versions)
    }

    override static func primaryKey() -> String? {
        return "id"
    }
}

class Version: Object {
    dynamic var id: String = "" //"kjv", "cus"
    dynamic var name: String = "" //"Union Simplified"
    let language = LinkingObjects(fromType: Language.self, property: "versions")

    convenience init(id: String, name: String) {
        self.init()
        self.id = id
        self.name = name
    }

    override static func primaryKey() -> String? {
        return "id"
    }
}

Every Language can have multiple Versions, and every Version has a reference (LinkingObject) to what Language holds it.

Next, I have the following code:

    let kjvVersion = Version(id: "kjv", name: "King James Version")
    let englishLanguage = Language(id: "english", versions: [kjvVersion])
    print(kjvVersion)

Inspecting kjvVersion.language gives me back an empty LinkingObject array. Why?! What am I doing wrong here?

Upvotes: 2

Views: 324

Answers (1)

Thomas Goyne
Thomas Goyne

Reputation: 8138

LinkingObjects objects contain the objects in the Realm which link to the containing object. Your objects are not managed by a Realm, so there will never be any objects in a Realm which link to them.

Upvotes: 2

Related Questions