使用以下两个简单模型,孤立对象存在问题:
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中时:
realm.add(objects, update: true)
(其中objects
是Array
个的Swift Torrent
)
领域正确地使用最新值更新了Torrent
数据库对象,但它保留了数据库中先前Peer
的出现,迫使我执行Peer.self
Object
s个查询并在写入新数据之前手动将其全部删除。
为了更好地解释:
步骤1:
Realm保存20个Torrent
中的Peer
步骤2: 远程通话
第3步:
Realm更新了以前的Torrent
,现在有10 Peer
预期结果:
Realm数据库应该总共包含1 Torrent
和10 Peer
当前结果:
领域数据库包含1 Torrent
和20 Peer
s