首页 > 解决方案 > 编译器无法在合理的时间内对该表达式进行类型检查

问题描述

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

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

所以我在我的组中放入 if else 状态以检查是否显示文本,但如果我放入超过 3 个 if else 状态,我会收到警告“编译器无法在合理的时间内对这个表达式进行类型检查”

如果有值,我有 10 个 var 要显示。如果它的值不同于“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)
        }
   }



标签: swiftif-statementtextuiviewswiftui

解决方案


尝试将它们分成自己的属性,所以 topGroup只包含结果,如下所示

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
}

推荐阅读