【问题标题】:Initialize object in SwiftUI preview在 SwiftUI 预览中初始化对象
【发布时间】:2021-09-28 12:11:44
【问题描述】:

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

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)
}
}

【问题讨论】:

  • 这个答案stackoverflow.com/questions/57781982/…可能会回答你的问题
  • 谢谢@workingdog ...也尝试过,但似乎没有什么不同。不过,我已将其添加到我的帖子中以避免混淆。

标签: arrays swift swiftui


【解决方案1】:

这个怎么样:

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

【讨论】:

  • 嗯,XCode 说它不在范围内。
  • 如果不在范围内,可能需要在文件中“导入 GoOsc”。
  • 您能否展示您如何初始化“GigView”,包括 init(...)(如果有)? “GigView_Previews”与“GigView”是否在同一个文件中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2013-06-27
  • 2020-10-24
  • 2020-10-21
  • 2019-11-03
  • 1970-01-01
相关资源
最近更新 更多