SwiftData问题:初始化器未初始化所有存储属性报错
SwiftData模型初始化报错解决方案
问题根源
你的PorcelineTile模型中,@Relationship修饰的items数组既没有设置默认值,也没有在初始化器中赋值。SwiftData要求所有@Model类的存储属性(包括关系属性)必须有明确的初始值,这就是报错的核心原因。
修复方案(二选一即可)
方案1:给关系属性设置默认值
import SwiftUI import SwiftData @Model final class PorcelineTile { @Attribute (.unique) var name: String var additionalInfo: String var pattern: [String: Double] init(name: String, pattern: [String: Double] = ["":0.0], additionalInfo: String = "") { self.name = name self.additionalInfo = additionalInfo self.pattern = pattern } // 给items设置空数组默认值 @Relationship(deleteRule: .cascade) var items: [Item] = [] }
方案2:在初始化器中初始化关系属性
import SwiftUI import SwiftData @Model final class PorcelineTile { @Attribute (.unique) var name: String var additionalInfo: String var pattern: [String: Double] @Relationship(deleteRule: .cascade) var items: [Item] init(name: String, pattern: [String: Double] = ["":0.0], additionalInfo: String = "") { self.name = name self.additionalInfo = additionalInfo self.pattern = pattern // 初始化items为空数组 self.items = [] } }
补充说明
之前你尝试注释其他属性无效,是因为错误根本不在那些属性上——不管其他属性如何,未初始化的items始终会触发SwiftData的初始化检查。只要给items补上初始值,报错就会消失。
内容的提问来源于stack exchange,提问作者Michael May
相关产品推荐
相关产品推荐

