我想从 Realm 0.98 迁移到 1.0.2,但我LinkingObjects
在继承中遇到了困难。我不能linkingObjects
像以前那样覆盖该属性。
Person
简化了我的模型存在pets
和cats
。Cat
是的子类Pet
(因为它共享我在这里省略的属性)。重要的是在人员的单独列表中处理猫。让我们假设它是一个很棒的猫应用程序,它也对其他宠物有一些支持。
在 0.98 中是这样的:
class Person: Object {
let pets = List<Pet>()
let cats = List<Cat>()
}
class Pet: Object {
var linkedOwner: Person? {
get {
return linkingObjects(Pet.self, forProperty: "pets").first
}
}
}
class Cat: Pet {
override var linkedOwner: Person? {
get {
return linkingObjects(Cat.self, forProperty: "cats").first
}
}
}
我因为linkingObjects
在 getter 中使用,所以我可以轻松覆盖它以将属性从 更改"pets"
为"cats"
。
现在因为 1.0 使用LinkingObjects
它linkingObjects
是不同的,例如这里描述的:
class Person: Object {
let pets = List<Pet>()
let cats = List<Cat>()
}
class Pet: Object {
let linkedOwners = LinkingObjects(fromType: Person.self, property: "pets")
var linkedOwner: Person? {
get {
return linkedOwners.first
}
}
}
class Cat: Pet {
// this does not compile: Cannot override with a stored property 'linkedOwners'
override let linkedOwners = LinkingObjects(fromType: Person.self, property: "cats")
// linkedOwner would be the same so we don't need to override anymore
}
如何更改/覆盖用于类LinkingObjects
中的Cat
属性?