Царство оставляет вложенные объекты-сироты - PullRequest
0 голосов
/ 30 августа 2018

У меня проблема с объектами-сиротами, использующими эти две простые модели:

Torrent.swift

final class Torrent: Object {
    @objc dynamic var id: Int = 0
    @objc dynamic var name: String = ""
    @objc dynamic var peers: RLMArray<Peer> = RLMArray(objectClassName: Peer.className())

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

Peer.swift

final class Peer: Object {
    @objc dynamic var address: String = ""

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

как видите Torrent имеет отношение к Peer.

Когда я пытаюсь сохранить Torrent Object s в Царстве, используя:

realm.add(objects, update: true)

(где objects - Свифт Array из Torrent с)

Realm корректно обновляет объекты базы данных Torrent с последними значениями, но сохраняет прежние значения Peer в базе данных, заставляя меня выполнить запрос Peer.self Object s и удаляя все из них вручную перед записью новые данные.

Чтобы лучше объяснить:

Шаг 1: Царство сохраняет Torrent с 20 Peer с

Шаг 2: Удаленный вызов

Шаг 3: Realm обновляет предыдущий Torrent, который теперь имеет 10 Peer s

Ожидаемый результат: База данных Realm должна содержать 1 Torrent и 10 Peer всего

Текущий результат: База данных области содержит 1 Torrent и 20 Peer s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...