在double highest = (double) numbers.get(0);
if(highest < (double) numbers.get(i)){
highest = numbers.get(i);
}
的标题中,它说:“添加时,如果它们尚未包含在Realm中,则此对象引用的所有子关系也将被添加到Realm中。”这是我希望的行为,但我并不是100%清楚“儿童关系”包含/排除的内容。此行为不包括哪些类型的Realm关系?
例如,如果我向领域添加add(_ object:, update:)
对象并且我有另一个未保存的ClassA
对象,那么ClassB
对象是否会被保存:
ClassB
对象指向ClassB
对象且ClassA
具有ClassA
LinkingObjects
属性? ClassB
对象添加到ClassB
的{{1}}属性中? List
有一个指向ClassA
对象的一对一关系变量?我知道我可以设置一些示例类并使用它来弄清楚行为,但是如果可能的话我想要一些正式的澄清。
答案 0 :(得分:2)
我在最近几个月也用领域找出了这种行为。根据我的经验,子关系也将保存在您的领域数据库中。您可以在下面找到基于您的要点的代码示例:
如果这是您的数据模型:
import Foundation
import RealmSwift
class ClassA: Object {
dynamic var uniqueID:String?
dynamic var someVaraible?
dynamic var classB:ClassB?
var list = List<ClassB>()
}
如果ClassB对象指向ClassA对象而ClassA具有 ClassB的LinkingObjects属性?
如果您有classA
变量aVar
,则可以使用aVar.classB = <your classB variable>
添加对象,在这种情况下,目前还不会在域数据库中存储任何内容。如果您随后使用
try! realm.write({
realm.add(aVar)
})
Realm将保存两个对象(aVar
以及您的classB
变量)。
如果将ClassB对象添加到ClassA的List属性中?
这与第一个问题中的行为完全相同 - &gt;如果您向领域添加classB's
,classB
的列表(也将在您的classA
数据库列中创建列表的每个条目)都将添加到领域。
如果ClassA具有指向ClassB的一对一关系变量 对象
在这种情况下,classB
变量已经存在,您刚刚创建了一个classA
变量,该变量开始指向领域中现有的classB
存储条目。 (如果我误解了你,请纠正我。)