Class SwiftUi初始化类中的主结构
我似乎无法初始化下面的fest变量。执行此操作时,我遇到以下错误: 在初始化所有存储的属性之前,在属性访问“fest”中使用“self” 我的结构是: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:
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。