gpt4 book ai didi

swift - Realm swift : saving related objects during add()

转载 作者:行者123 更新时间:2023-11-28 12:15:49 26 4
gpt4 key购买 nike

add(_ object:, update:) 的 header 中,它说,“添加时,如果此对象引用的所有子关系尚未添加到 Realm 中,它们也将添加到 Realm 中它。”这是我希望的行为,但我不是 100% 清楚“ child 关系”包括/排除的内容。此行为不涵盖哪些类型的 Realm 关系?

例如,如果我将一个 ClassA 对象添加到 Realm ,并且我有另一个未保存的 ClassB 对象,ClassB 对象会被保存:

  • 如果 ClassB 对象指向 ClassA 对象,并且 ClassA 具有 LinkingObjects 属性B 类
  • 如果 ClassB 对象被添加到 ClassAList 属性中?
  • 如果 ClassA 具有指向 ClassB 对象的一对一关系变量?

我知道我可以设置一些示例类并尝试使用它来找出行为,但如果可能的话我想得到一些官方说明。

最佳答案

我也在过去几个月里发现了 realm 的这种行为。根据我的经验,子关系也将保存在您的 Realm 数据库中。您可以在下面找到基于要点的代码示例:

如果这是您的数据模型:

import Foundation
import RealmSwift

class ClassA: Object {

dynamic var uniqueID:String?
dynamic var someVaraible?


dynamic var classB:ClassB?
var list = List<ClassB>()
}

If the ClassB object points to the ClassA object and ClassA has a LinkingObjects property for ClassB?

如果你有一个 classA变量 aVar您可以使用 aVar.classB = <your classB variable> 添加您的对象在这种情况下,暂时不会在 Realm 数据库中存储任何内容。如果您随后使用

将对象添加到 Realm
 try! realm.write({ 
realm.add(aVar)
})

Realm 将保存这两个对象(aVar 以及您的 classB 变量)。

If the ClassB object is added to a List property of ClassA?

这与您第一个问题中的行为完全相同 -> classB's 的列表(列表中的每个条目也将在您的 classB 数据库列中创建)将被添加到 Realm ,如果您添加 classA到 Realm 。

If ClassA has a to-one relationship variable pointing to the ClassB object?

在这种情况下 classB变量已经存在,您刚刚创建了一个 classA变量,开始指向现有的 classB存储在 Realm 中的条目。 (如果我误解了你,请纠正我)。

关于swift - Realm swift : saving related objects during add(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46652864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com