You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:16:09