Swiftui: @environmentObject - нельзя использовать член экземпляра в инициализаторе свойства; инициализаторы свойств запускаются до того, как станет доступным 'self'
Я пытаюсь передать данные из @environmentObject в объект @State в TopLevel
struct ContentView: View {
@EnvironmentObject var countRecognizer: themeCounter
@State var theme: themeModel = themeData[countRecognizer.themeCount]
@State var hideBar = true
var body: some View {
ZStack {
videoCard(theme: theme)
.statusBar(hidden: true)
Text("\(self.countRecognizer.themeCount)")
if hideBar == true {
}
}
Но я получаю эту ошибку: "Невозможно использовать член экземпляра в инициализаторе свойства; инициализаторы свойств запускаются до того, как 'self' станет доступным"
массив themeData должен получить Int из объекта среды.
Как я могу исправить эту проблему?
2 ответа
Делай свое
theme: themeModel = themeData[countRecognizer.themeCount]
в
.onAppear(...)
Вы не можете использовать countRecognizer
непосредственно из начального значения другого свойства, и здесь нет простого решения.
Предлагаю вам заняться рефакторингом вашего @State var theme
собственность в @Published var theme
внутри themeCounter
ObservableObject. Учебники Apple помогут вам: https://developer.apple.com/tutorials/swiftui/tutorials
В качестве отступления: НЕ НАЗЫВАЙТЕ ТИПЫ НАИМЕНОВАНИЕМ.
themeModel
должно бытьThemeModel
themeCounter
должно бытьThemeCounter
videoCard
должно бытьVideoCard