首页 > 解决方案 > 在 SwiftUI 预览中初始化对象

问题描述

编辑:我已经完全删除了预览,只是从主视图中将对象作为参数传递给视图。我得到这个:

Cannot convert value of type 'GoOsc.GpInstanceModel.Type' to expected argument type 'GoOsc.GpInstanceModel'

我的理解是,预览需要@EnvironmentObject它使用的任何参数的默认值......

struct GigView_Previews: PreviewProvider {
static var previews: some View {
    GigView().environmentObject(GoOsc())
        .preferredColorScheme(.dark)
    }
}

这段代码抛出......

// Missing arguments for parameters 'gpInstanceMain', 'gpInstanceBackup' in call

它要求我的自定义对象类型的两个变量,在主体中像这样设置......

var gpInstanceMain: GoOsc.GpInstanceModel
var gpInstanceBackup: GoOsc.GpInstanceModel

为某些字符串设置默认值很容易,但我不知道在这种情况下该怎么做。它超出了范围,因为它是预览,所以我无法访问填充的对象以用作预览。

所以我的问题是如何“手动”初始化我的对象?

这是它派生自的结构...

struct GpInstanceModel {
var gpSongName: String
var gpSongNumber: String
var gpSongPartName: Array<String>
var gpSongPartNumber: Array<String>
var gpCurrentSongPartName: String
var gpCurrentSongPartNumber: String
init() {
    gpSongName = ""
    gpSongNumber = ""
    gpSongPartName = Array(repeating: "", count: 8)
    gpSongPartNumber = Array(repeating: "", count: 8)
    gpCurrentSongPartName = ""
    gpCurrentSongPartNumber = ""
}
}

Xcode 建议这个(在 <> 中)

struct GigView_Previews: PreviewProvider {
static var previews: some View {
    GigView(gpInstanceMain: <#GoOsc.GpInstanceModel#>, gpInstanceBackup: <#GoOsc.GpInstanceModel#>).environmentObject(GoOsc())
        .preferredColorScheme(.dark)
}
}

标签: arraysswiftswiftui

解决方案


这个怎么样:

struct GigView_Previews: PreviewProvider {
  static var previews: some View {
    GigView(gpInstanceMain: GpInstanceModel(), gpInstanceBackup: GpInstanceModel())
        .environmentObject(GoOsc())
        .preferredColorScheme(.dark)
   }
}

推荐阅读