Ios SwiftUI上的previewProvider未加载

Ios SwiftUI上的previewProvider未加载,ios,swift,swiftui,Ios,Swift,Swiftui,今天,我想知道是否可以使用PreviewProvider在SwiftUI上设计一个视图。当您有模型时,这很困难,因为您需要“初始化”每个模型和属性才能看到UI模拟器。前 struct SimpleView: View { @State private var number : Int var body: some View { ScrollView{ VStack{ T

今天,我想知道是否可以使用
PreviewProvider
在SwiftUI上设计一个视图。当您有模型时,这很困难,因为您需要“初始化”每个模型和属性才能看到UI模拟器。前

    struct SimpleView: View {
    
    @State private var number : Int 
    
    
    var body: some View {
        ScrollView{
            VStack{
                Text(String(number))
            }
        }
    }
}


struct SimpleView_Previews: PreviewProvider {
    static var previews: some View {
        SimpleView(Int: 5)
    }
}
UI预览效果很好

但是如果我需要使用具有40-70个属性的自定义对象,该怎么办(

有没有一种在开始时没有“硬代码”的工作方式


非常感谢您

一种方法是创建一个
mockViewModel
类属性,该属性返回一个具有固定值的实例,您可以将其用于预览

在本例中,支持模型对象是一个核心数据管理对象

在正常使用中,可以调用
ProjectDetailViewModel(项目:)
initialiser

对于预览,可以使用
mockViewModel
属性

class ProjectDetailViewModel: ObservableObject {
    
    @Published var name: String {
        didSet {
            self.project.name = name
        }
    }
    
    @Published var notes: String {
        didSet {
            self.project.notes = notes
        }
    }
    
    let project: Project!
    
    init(project: Project) {
        self.project = project
        name = project.name ?? ""
        notes = project.notes ?? ""
    }
    
    private init() {
        project = nil
        name = "Mock project"
        threePhase = false
        notes = "Mock Notes"
    }
    
    static var mockViewModel:ProjectDetailViewModel {
        return ProjectDetailViewModel()
    }
    
}


struct ProjectDetailView_Previews: PreviewProvider {
    static var previews: some View {
        ProjectDetailView(project: ProjectDetailViewModel.mockViewModel)
    }
}

我通常会创建相关
ViewModel
MockViewModel
子类,或者如果视图模型是一个结构,我会在te struct上创建一个静态函数,返回一个适当的“mock”结构的实例。具有40-70个属性-永远不要这样做-在小部分上分离,越小越好。我将尝试分离这些模型,因为加载整个模型很烦人(不幸的是,有这么多的模型可以一起工作!我的意思是,一个地址表有20个属性,比如邮政编码、电子邮件、姓名、电话……真是一团糟)@Paulw11你能给我举个例子吗?