提问人:HangarRash 提问时间:7/5/2023 最后编辑:HangarRash 更新时间:7/24/2023 访问量:216
父母/子女关系 - 父母应该软弱吗?
Parent/Child relationship - should parent be weak?
问:
通常,在父/子关系中,类中的属性需要为 。例如:parent
Child
weak
class Parent {
var children: [Child]
}
class Child {
weak var parent: Parent?
}
这样做是为了避免参考周期。
如果我想将它们与 SwiftData 一起使用,我认为它会是:
@Model
class Parent {
@RelationShip(inverse: \Child.parent)
var children: [Child]
}
@Model
class Child {
weak var parent: Parent?
}
但是,当查看 WWDC23 中的一些示例代码(Backyard Birds:使用 SwiftData 和小部件构建应用程序)时,我没有看到任何用处。weak
例如,除其他外,还有名为 、 和 的类。以下是课程的相关摘录:Plant
PlantSpecies
Backyard
@Model public class Plant {
@Attribute(.unique) public var id: String
public var creationDate: Date
public var species: PlantSpecies!
public var backyard: Backyard?
public var variant: Int
...
@Model public class Backyard {
@Attribute(.unique) public var id: String
public var name: String
@Relationship(inverse: \Plant.backyard)
public var leadingPlants: [Plant]
@Relationship(inverse: \Plant.backyard)
public var trailingPlants: [Plant]
...
@Model public class PlantSpecies {
@Attribute(.unique) public var id: String
public var parts: [PlantPart]
@Relationship(.cascade, inverse: \Plant.species)
public var plants: [Plant]
...
为什么 和 在类中没有设置为 ?这是疏忽还是 SwiftData 出了什么问题?species
backyard
Plant
weak
答: 暂无答案
评论