SwiftUi 初始化一个类中的主结构
Posted
技术标签:
【中文标题】SwiftUi 初始化一个类中的主结构【英文标题】:SwiftUi initialize the main struct in a class 【发布时间】:2021-08-01 09:24:43 【问题描述】:我似乎无法初始化下面的 fest var。这样做时我收到以下错误:
在所有存储的属性初始化之前用于属性访问“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)
【问题讨论】:
您的意思是在闭包中捕获[self]
,然后实际不使用它?也许你的意思是self.shows.append
?
【参考方案1】:
谢谢,但这仍然没有给我我想要做的事情。
在课堂上,我需要能够将数据添加到 fest var。 fest var 是需要更新的数据结构的主要部分。我使用的是@Published var shows: [Show] = []
,因为它有效。
fest.days = stringOfDays
fest.shows.append(shows)
类似于使用addShow
函数。
在我的 ContentView 中,我有:
@StateObject var festivalData = FestivalData()
我收到以下错误:
调用中缺少参数“fest”的参数
我不必为其他已发布的变量添加参数。
【讨论】:
抱歉,我错过了这个,因为它应该是对您的问题的编辑或对我的答案的评论(这本身并不是一个答案)。是的,您需要在其初始化程序中将Fest
传递给FestivalData
。我不确定变异fest
的问题是什么——它是var
,所以你应该能够执行你引用的添加日期和节目的代码。我想我一定错过了方程式的一个重要部分,但我还不清楚那是什么。
抱歉发错地方了。我一直在拔头发,试图让它发挥作用。 func addShow 按原样工作,但我真正想做的是将节目数组附加到 Fest 结构: fest.shows.append(shows) 节目正在填充,但需要添加到 fest。跨度>
以上是关于SwiftUi 初始化一个类中的主结构的主要内容,如果未能解决你的问题,请参考以下文章