例如我有
class A : Object
{
let bList List<B> = List<B>()
}
class B : Object
{
let aList List<A> = List<A>()
}
然后在我的网络部分的某处,我做了类似
的事情let bItems : [B] = []
let a : A = A()
a.bList.appendContentsOf(bItems)
bItems.forEach({$0.aList.append(a)})
当我保存到Realm时,我是否必须同时编写它们?或者只写&#34; a&#34;应该够了吗?像这样:
let realm : Realm = try Realm()
try realm.write({ () -> Void in
realm.add(a, update: true)
})
或者像这样:
let realm : Realm = try Realm()
try realm.write({ () -> Void in
realm.add(a, update: true)
realm.add(bList, update : true)
})
P.S。特别考虑到我真的需要&#34;更新&#34;特征。这意味着我已经存在A对象和B对象,可能只需要对其属性进行更新。
答案 0 :(得分:1)
如果您有一个包含子对象列表的Realm Object
,则Realm可以使用Object().linkingObjects(_:forProperty:)
方法代表您执行反向查找。
例如,要找出A
的哪些实例和B
的实例是其子代。
let aParentObject = bItem.linkingObjects(A.self, forProperty: "bList")
你当然可以在这两个方向保持一个列表,但这绝对是更多的工作。 ;)