“Type ‘()’ 无法符合 ‘View’ 错误”

huangapple go评论47阅读模式
英文:

if else "Type '()' cannot conform to 'View'" error

问题

以下是您要翻译的内容:

以下代码生成了“类型'()'无法符合'View'”错误,但为什么?

var body: some View {
    VStack {
        if isLineGraph == true {
            chartAverage()  <- 类型'()'无法符合'View'
        } else {
            chartActual()
        }
    }
}

如果我将chartAverage()更改为chartActual(),则会收到相同的错误。不理解为什么会出现错误,如果出现错误,为什么不针对两个函数都生成错误?

chartAverage()的示例:

func chartAverage() {
    @Environment(\.colorScheme) var scheme
    var cloudCoverArray: [CloudCoverArray] = GlobalVariables.masterCloudCover
    Chart {
        ForEach(cloudCoverArray, id:\.self) {item in
            LineMark(
                x: .value("Date", item.date),
                y: .value("CloudCover", item.averageCloud),
                series: .value("Date", "CloudCover")
            )
            .foregroundStyle(Color.gray)
            .lineStyle(StrokeStyle(lineWidth: 2))
        }
    }
    .padding()
    .frame(width: GlobalVariables.screenWidth - 32, height: 340 + 30)  // 30 = top + bottom padding from CalculateView
    .clipShape(RoundedRectangle(cornerRadius: 15))
    //.padding()
    .background {
        RoundedRectangle(cornerRadius: 10, style: .continuous)
            .fill((scheme == .dark ? Color.black : Color.white).shadow(.drop(radius: 2)))
    }
}
英文:

The following code generates the "Type '()' cannot conform to 'View'" error, but why?

var body: some View {
    VStack{
        if isLineGraph == true {
            chartAverage()  <- Type '()' cannot conform to 'View'
        } else {
            chartActual()
        }

If I change chartAverage() to chartActual() you get the same error. Don't understand why I am getting the error and if I am why it doesn't generate them against both functions?

Example of chartAverage()

func chartAverage() {
    @Environment(\.colorScheme) var scheme
    var cloudCoverArray: [CloudCoverArray] = GlobalVariables.masterCloudCover
    Chart {
        ForEach(cloudCoverArray, id:\.self) {item in
            LineMark(
                x: .value("Date", item.date),
                y: .value("CloudCover", item.averageCloud),
                series: .value("Date", "CloudCover")
            )
            .foregroundStyle(Color.gray)
            .lineStyle(StrokeStyle(lineWidth: 2))
        }
    }
    .padding()
    .frame(width: GlobalVariables.screenWidth - 32, height: 340 + 30)  // 30 = top + bottom padding from CalculateView
    .clipShape(RoundedRectangle(cornerRadius: 15))
    //.padding()
    .background {
        RoundedRectangle(cornerRadius: 10, style: .continuous)
            .fill((scheme == .dark ? Color.black : Color.white).shadow(.drop(radius: 2)))
    }
}

答案1

得分: 1

chartAverage()chartActual() 必须都返回 View 类型,通常是 some View。如果没有这样做,视图构建器会在遇到第一个错误时失败,并且你不会得到第二个错误的报错信息。

你现在有这样的代码:

func chartAverage() {

你需要这样:

func chartAverage() -> some View {
英文:

chartAverage() and chartActual() must both return View types, typically some View. Without this, the view builder fails at the first error it encounters, and you don't get an error for the second mistake.

You have this:

func chartAverage() {

You need this:

func chartAverage() -> some View {

huangapple
  • 本文由 发表于 2023年6月22日 18:37:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/76531040.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定