微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在构建到设备 SwiftUI 时,我是否需要“PreviewProvider”才能使用 @ObservedObject

如何解决在构建到设备 SwiftUI 时,我是否需要“PreviewProvider”才能使用 @ObservedObject

这是我的代码的样子:

import SwiftUI

struct dummy: View {
    var job: Job
    @Observedobject var jobviewmodel: Jobviewmodel
    
    var body: some View {
        Text("Placeholder for job details,will not exists in production,please delete")
        vstack(alignment: .leading){
            HStack{
                Text("Boat Name")
                    Spacer()
                        .frame(width: 50,height: 50)
                Text(job.boatName)
            }
        

            /*HStack{
                Text("Job Time")
                    Spacer()
                        .frame(width: 50,height: 50)
                Text(jobTime)
            }*/
            HStack{
                Text("Job Type")
                    Spacer()
                        .frame(width: 50,height: 50)
                Text(job.job)
            }
            HStack{
                Text("Owner's Name")
                Spacer()
                    .frame(width: 50,height: 50)
                Text(job.ownerName)
                //Text(job.time)
            }
            
            Button("Complete Job"){
                jobviewmodel.complete(job)
            }.frame(width: 200)
        }
        
        
        
        
    }
}



/*struct dummy_Previews: PreviewProvider {
    static var previews: some View {
        dummy(job: Job[0])
    }
}*/
//foundout to get rid of this from below:
//https://medium.com/swift-productions/create-list-navigation-using-swiftui-c63534355fb1
//If i didn't get rid of it,it would case issues

如果我保留“PreviewProvider”,它就可以工作,如果我保留它,它会抛出错误。每次尝试应用程序时,我都会直接构建到设备上。我需要这个才能让 Observedobject 工作吗?

解决方法

如果您想使用预览功能,您必须为 jobViewModel 参数提供某种实例。

您还没有向 JobViewModel 展示代码,但它可能很简单:

dummy(job: Job(),jobViewModel: JobViewModel())

这是假设 Job 和 JobViewModel 不接受任何参数——如果他们接受,您还必须为这些参数填写值。 Xcode 应该能够帮助您自动完成以向您显示它们的参数可能是什么。

没有预览不会影响您在模拟器或设备上以非预览模式运行应用的能力。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。