Class SwiftUi初始化类中的主结构

Class SwiftUi初始化类中的主结构,class,struct,swiftui,initialization,Class,Struct,Swiftui,Initialization,我似乎无法初始化下面的fest变量。执行此操作时,我遇到以下错误: 在初始化所有存储的属性之前,在属性访问“fest”中使用“self” 我的结构是: struct Fest: Codable { let days, year: String let shows: [Show] } struct Show: Codable, Identifiable { let id = UUID() let showName, stageName, description:

我似乎无法初始化下面的fest变量。执行此操作时,我遇到以下错误:

在初始化所有存储的属性之前,在属性访问“fest”中使用“self”

我的结构是:

struct Fest: Codable {
    let days, year: String
    let shows: [Show]
}

struct Show: Codable, Identifiable {
    let id = UUID() 
    let showName, stageName, description: String
    let times: [Int] 
    let isFavorite, oneNight: Bool
}
我的班级是:

class FestivalData: ObservableObject {
    @Published var fest: Fest
    @Published var shows: [Show] = []
    
    init() {
        self.fest = fest
    }
    
    func addShow (_ show: Show) {
        DispatchQueue.main.async { [self] in
            shows.append(show)
        }
    }

}

谢谢,但这仍然不能告诉我我要做什么。 在类中,我需要能够将数据添加到fest变量。fest变量是需要更新的数据结构的主要部分。我使用的是
@Published var shows:[Show]=[]
,因为这很有效

fest.days = stringOfDays
fest.shows.append(shows)
与使用
addShow
功能类似

在我的ContentView中,我有:
@StateObject var festivalData=festivalData()
我得到以下错误: 调用中缺少参数“fest”的参数


我不必为另一个已发布的变量设置参数。

您的意思是在闭包中捕获
[self]
,然后不实际使用它吗?也许你的意思是
self.shows.append
?对不起,我错过了这个,因为它应该是对你的问题的编辑或对我的答案的评论(在它的self中,它不是答案)。是的,您需要在其初始值设定项中将
Fest
传递给
FestivalData
。我不确定变异
fest
的问题是什么——它是一个
var
,因此您应该能够执行您引用的代码添加天数和显示。我想我一定错过了这个等式的一个重要部分,但我还不清楚这是什么。很抱歉,我发错了位置。我一直在努力使这项工作顺利进行。func addShow按原样工作,但我真正想做的是将显示数组附加到Fest结构:Fest.shows.append(shows)shows正在填充,但需要添加到Fest。