我想我偶然發現了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