比如我有
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 时,我是否必须将它们都写入?还是只写“a”就足够了?像这样:
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)
})
附注特别是考虑到我确实需要“更新”功能。这意味着 A 对象和 B 对象都已经存在,可能只需要更新它们的属性。
最佳答案
如果您有一个包含子对象列表的 Realm Object
,Realm 可以使用 Object().linkingObjects(_ :forProperty:)
方法。
例如,找出 A
和 B
的哪些实例是其子实例。
let aParentObject = bItem.linkingObjects(A.self, forProperty: "bList")
您当然可以像那样在两个方向上维护一个列表,但这肯定需要更多的工作。 ;)
关于ios - 链接多对多的对象应该都写在 Realm 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35116812/