我想我偶然发现了RealmSwift中的一些未定义的行为。LinkObjects属性在保存到Realm数据库之前发生打印时清空
在狗类中的 “反向引用” 属性被定义这样:
let backReferences = LinkingObjects(fromType: Person.self, property: "dogs")
我创建了两个对象,其中人父狗:
self.realm = try! Realm()
let person = Person()
person.firstName = "Paul"
person.secondName = "Brewczynski"
let dog = Dog()
dog.name = "MyDogName"
person.dogs.append(dog) // Right now this dog is mine
然后:
//print("BackReferebces print #0 - on yet unmanaged realm Object")
//print(dog.backReferences)
try! realm!.write {
realm?.add(person) // Writing person to db, with dog reference
print("BackReferences print #1")
print(dog.backReferences)
}
print("BackReferences print #2")
print("Show backReferences in using my orginal reference to dog \(dog.backReferences)")
print("BackReferences print #3")
print("Show backReferences using Persons's reference \(person.dogs.first!.backReferences)")
它完美的工作(打印正确反向引用人持有狗),直到你取消注释2第一行,并在由Realm管理之前打印狗的后退参考。
然后在打印#1和#2我得到空单:
BackReferences print #1
LinkingObjects<> <0x7fa0d1611c00> (
)
BackReferences print #2
Show backReferences in using my orginal reference to dog LinkingObjects<> <0x7fa0d1611c00> (
)
为什么会这样?我偶然发现了一些Realm的未定义行为?
整体的AppDelegate文件:
https://gist.github.com/pbrewczynski/8ebc3cb5796850008a90f79dbee6bd04