swiftui @State值取决于@ObservedObject ViewModel初始化错误

规则23

我很简单viewModel

final class EmployeeListViewModel: ObservableObject {
 @Published var list = [Employee]()
 init() {
  // some request
  self.list = [Employee, Employee]
 }
}

并有一个view

struct EmployeeView: View {
 @ObservedObject var viewModel = EmployeeListViewModel()
 @State private var showContents: [Bool] = Array(repeating: false, count: viewModel.list.count)// <- error throws here
 var body: some View {
        GeometryReader { fullView in
            ScrollView {
                VStack(spacing: 40) {
                  ForEach(self.viewModel.list) { employee in
                     Text(employee.firstName).foregroundColor(.black)
                  }
                }
            }
        }
 }
}

错误文字:

无法在属性初始化程序中使用实例成员“ viewModel”;属性初始化程序在“自我”可用之前运行

我尝试用更改它init

struct EmployeeView: View {
 @ObservedObject var viewModel = EmployeeListViewModel()
 @State private var showContents: [Bool]

 init() {
        _showContents = State(initialValue: Array(repeating: false, count: viewModel.list.count)) // <- error
    }

 var body: some View {
        GeometryReader { fullView in
            ScrollView {
                VStack(spacing: 40) {
                  ForEach(self.viewModel.list) { employee in
                     Text(employee.firstName).foregroundColor(.black)
                  }
                }
            }
        }
 }
}

但这也会引发错误:

在初始化所有存储的属性之前使用“自我”

这将引发对我叫viewModelinit()

怎么解决呢?@State我用于卡片视图。在那里我简化了视图,以便于理解。

他的脾气

这是可能的解决方案

struct EmployeeView: View {
 @ObservedObject var viewModel: EmployeeListViewModel     // << declare
 @State private var showContents: [Bool]                  // << declare

 init() {
       let vm = EmployeeListViewModel()   // create here !!

       // initialize both below
       self.viewModel = vm                     
       self._showContents = State(initialValue: Array(repeating: false, 
              count: vm.list.count))
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在类型取决于布尔值的全局范围内初始化结构

SwiftUI @Binding初始化

SwiftUI @State var初始化问题

如何在SwiftUI的init函数中初始化@State变量?

查明“条件跳转或移动取决于未初始化的值” valgrind消息

Swiftui-如何使用环境对象作为参数来初始化observedObject?

错误:条件跳转或移动取决于未初始化的值-C valgrind

分割错误SIGSEGV取决于初始化方法

SwiftUI初始化方法不适用于ObservedObject声明

为什么SwiftUI对@Binding和@State vars要求_propertyName样式初始化?

为什么我不能在SwiftUI初始化中为@State var赋值?

在SwiftUI中初始化Slider值

SwiftUI:初始化未初始化数组

在变更函数和初始化程序中更改时,@ State无法更新SwiftUI视图

从初始化程序返回而不初始化所有存储的属性-SwiftUI绑定错误

如何使用EnvironmentObject在SwiftUI中初始化State属性?

反应useEffect取决于在调用api之后初始化的值

条件跳转或移动取决于使用valgrind的未初始化值

条件跳转或移动取决于未初始化的值strcat

fread() 导致 Valgrind 错误:“条件跳转或移动取决于未初始化的值”

条件跳转或移动取决于未初始化的值

如何修复C中的“条件跳转或移动取决于未初始化的值”错误

SwiftUI 中的“从初始化程序返回而不初始化所有存储的属性”错误

在 SwiftUI 中使用 `@Binding` 初始化一个 `@State`ful 结构

C - 链表 valgrind 未初始化错误取决于添加元素的顺序

错误:从初始化程序返回而不初始化 SwiftUI 项目中的所有存储属性?

太多的初始化值错误

初始化@State 变量时,如何避免多次初始化 SwiftUI 初始视图?

SwiftUI ViewModel 如何初始化空的单个结构?