Xcode 12.0 12A7209 SwiftUI 错误:编译器无法在合理的时间内对该表达式进行类型检查
Posted
技术标签:
【中文标题】Xcode 12.0 12A7209 SwiftUI 错误:编译器无法在合理的时间内对该表达式进行类型检查【英文标题】:Xcode 12.0 12A7209 SwiftUI error: The compiler is unable to type-check this expression in reasonable time 【发布时间】:2020-09-22 11:34:12 【问题描述】:我有这个从 Xcode 12 beta 5 开始的多平台应用程序项目, 3 天前我从 App Store 将 Xcode 更新到最新版本(12.0,build 12A7209),现在这段代码有问题
.navigationBarItems(trailing: HStack
Button(action:
self.showSettings.toggle()
, label:
Image(systemName: "gear").font(.system(size: 30))
)
.sheet(isPresented: $showSettings, content:
SettingsView(showSheet: $showSettings)
)
)
当我尝试添加前导 HStack 时:
.navigationBarItems(leading: HStack
Button("Hello")
print("Hello")
, trailing: HStack
Button(action:
self.showSettings.toggle()
, label:
Image(systemName: "gear").font(.system(size: 30))
)
.sheet(isPresented: $showSettings, content:
SettingsView(showSheet: $showSettings)
)
)
我收到此错误:编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式分解为不同的子表达式
编辑:我试图在一个新项目中复制它,但我没有收到错误,所以这只发生在这个“旧”项目上
【问题讨论】:
尝试将你的 HStack 重构为一个小函数。 无法复制。您的代码为我编译(填写时)。请显示minimal reproducible example - 应该实际编译但给出此错误的完整示例。 【参考方案1】:正如已经提到的,将代码分成更小的部分应该可以解决这个问题。但是,自从更新到 Xcode 12 后,每当代码中出现任何错误时,例如错误的变量名,似乎都会抛出此错误。
查看您的代码,我看不到任何错误。确保SettingsView
也没有错误。
【讨论】:
【参考方案2】:我解决了用我创建的单独的自定义视图替换 HStack 的问题。 我不知道他为什么给我这个错误,它适用于其他项目。
.navigationBarItems(leading: HStack
Button(action:
self.showSettings.toggle()
, label:
Image(systemName: "gear").font(.system(size: 25))
)
.sheet(isPresented: $showSettings, content:
SettingsView(showSheet: $showSettings)
)
, trailing: AddTaskButton().environmentObject(self.stateController))
【讨论】:
【参考方案3】:那里有很多关于如何加快编译和类型检查的文章,但对我帮助最大的文章是将类型添加到所有变量中,例如 var showSheet: Bool
,当我遇到问题时,我将类型检查警告 -Xfrontend -warn-long-expression-type-checking=<limit>
添加到 Build Settings>Swift Compiler>Custom Flags>Other Swift Flags
我从 400
开始,然后从那里开始工作。https://www.avanderlee.com/optimization/analysing-build-performance-xcode-10/
【讨论】:
以上是关于Xcode 12.0 12A7209 SwiftUI 错误:编译器无法在合理的时间内对该表达式进行类型检查的主要内容,如果未能解决你的问题,请参考以下文章
使用下载的 pkg 文件时,xcode 命令行工具安装在哪里?
Xcode 编译器错误:编译器无法在合理的时间内对该表达式进行类型检查(Xcode 12.0 SwiftUI)
无法在 macOS Monterey 版本 12.0 Beta 中安装 Cocoapods - Xcode 13.0(13A233)