ios - 链接多对多的对象应该都写在 Realm 中吗?

标签 ios swift realm

比如我有

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:) 方法。

例如,找出 AB 的哪些实例是其子实例。

let aParentObject = bItem.linkingObjects(A.self, forProperty: "bList")

您当然可以像那样在两个方向上维护一个列表,但这肯定需要更多的工作。 ;)

关于ios - 链接多对多的对象应该都写在 Realm 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35116812/

相关文章:

ios - Image.xcassets 问题显示 iOS 8 设备的启动画面

arrays - 如何将整数分解为 2 的幂数组?

android - 是否可以部分更新 RealmObject

swift - 带有 AnyObject 下标的 Realm.io

iphone - 服务器不接受我的多部分/表单数据

ios - touchesBegan、touchesEnded、touchesMoved 用于移动 UIView

ios - 如何选择一种可以在 iOS 中以任何字母显示文本的字体?

swift - 我可以在 firebase 上手动验证电子邮件/密码帐户吗?

swift - Swift 中 ARC 溢出的可能性?

swift - RxSwift 和控制流 - 一个坏主意?