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