编译器无法在合理的时间对该表达式进行类型检查

时间:2020-01-26 03:52:54

标签: swift if-statement text uiview swiftui

在我的ScrollView中,我尝试显示从互联网请求中收到的预测。 服务器,如果该特定项目(例如windGust)没有可用数据,则默认值设置为“ 0”(字符串)

现在在我的ScrollView上,我想隐藏包含零的文本,以便仅显示具有值的预测项。

因此我将“ if else”状态放入“ Group”中以检查是否显示“文本”,但是如果我输入“ 3”以上的其他状态,则会收到警告“编译器无法在合理的时间内对此表达式进行类型检查'

如果有值,我有10个变量要显示。如果值不等于“ 0”,如何显示或隐藏呢?

 Group{
        if forecast.change_indicator == "0" {
            Text(forecast.change_indicator).hidden()
        } else {
              Text(forecast.change_indicator)
        }

        if forecast.showTimeBecoming == "0" {
       Text(forecast.change_indicator).hidden()
        } else {
         Text(forecast.showTimeBecoming)
        }
      if forecast.windGust == "0" {
       Text(forecast. windGust).hidden()
        } else {
         Text(forecast. windGust)
        }
   }



1 个答案:

答案 0 :(得分:1)

尝试将它们分成各自的属性,因此顶部Group仅包含结果,如下所示

var ChangeIndicator : some View {
    Group {
        if forecast.change_indicator == "0" {
            Text(forecast.change_indicator).hidden()
        } else {
            Text(forecast.change_indicator)
        }
    }
}

var ShowTimeBecoming : some View {
    Group {
        if forecast.showTimeBecoming == "0" {
            Text(forecast.showTimeBecoming).hidden()
        } else {
            Text(forecast.showTimeBecoming)
        }
    }
}
// ... << declare similar for each entity

和结果

Group {
   ChangeIndicator
   ShowTimeBecoming
   // ... << all others follow
}