SwiftData读取关联模型属性崩溃:EXC_BREAKPOINT错误求助
SwiftData读取关联数组崩溃的解决方案
崩溃原因
在SwiftData中,当一个@Model类包含另一个@Model类的数组属性时,必须通过@Relationship修饰符显式定义两者的关联关系。你当前的代码没有添加这个修饰,导致SwiftData无法正确管理trackerType这个关联集合,读取时触发内存访问错误(即EXC_BREAKPOINT崩溃)。
修复后的模型代码
@Model class Tracker { var name: String @Relationship(deleteRule: .cascade) var trackerType: [TrackerType] init(name: String, trackerType: [TrackerType]) { self.name = name self.trackerType = trackerType } } @Model class TrackerType { var type: String var status: Bool init(type: String, status: Bool) { self.type = type self.status = status } }
说明
@Relationship修饰符告诉SwiftData如何处理两个模型间的关联,deleteRule: .cascade表示当Tracker实例被删除时,关联的所有TrackerType实例也会被删除,你可以根据业务需求调整删除规则(比如.nullify、.restrict等)。- 即使是本地模拟数据,只要是通过SwiftData上下文创建的实例,都需要遵循这个关联规则,否则SwiftData的内部管理逻辑会出错,导致崩溃。
内容的提问来源于stack exchange,提问作者Abdullah
相关产品推荐
相关产品推荐

