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

Posted

技术标签:

【中文标题】编译器无法在合理的时间内对该表达式进行类型检查【英文标题】:The compiler is unable to type-check this expression in reasonable time 【发布时间】:2020-01-26 03:52:54 【问题描述】:

在我的 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)
        
   



【问题讨论】:

【参考方案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

【讨论】:

以上是关于编译器无法在合理的时间内对该表达式进行类型检查的主要内容,如果未能解决你的问题,请参考以下文章

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

Xcode 编译器错误:编译器无法在合理的时间内对该表达式进行类型检查(Xcode 12.0 SwiftUI)

Xcode 12.0 12A7209 SwiftUI 错误:编译器无法在合理的时间内对该表达式进行类型检查

无法在合理的时间内对该表达式进行类型检查 - ForEach SwiftUI

无法编译 SwiftUI ForEach 表

如何使用 SwiftUI 交替行?