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

时间:2020-09-22 11:34:12

标签: swift swiftui xcode12

我有一个我从Xcode 12 beta 5开始的Multiplatform应用程序项目, 3天前,我从App Store将Xcode更新到最新版本(12.0,内部版本12A7209),现在这段代码有问题

.strip().split()

当我尝试添加领先的HStack时:

.navigationBarItems(trailing: HStack {
       Button(action: {
           self.showSettings.toggle()
        }, label: {
           Image(systemName: "gear").font(.system(size: 30))
        })
        .sheet(isPresented: $showSettings, content: {
           SettingsView(showSheet: $showSettings)
        })
  })

我得到这个错误:编译器无法在合理的时间内对这个表达式进行类型检查。尝试将表达式分解为不同的子表达式

编辑:我试图在一个新项目中复制它,但是我没有收到错误,所以这只会在这个“旧”项目上发生

3 个答案:

答案 0 :(得分:0)

我解决了用我创建的单独的自定义View替换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))

答案 1 :(得分:-1)

关于如何加快编译和类型检查的文章很多,但是对我最有帮助的文章是将类型添加到所有变量中,例如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 /

答案 2 :(得分:-1)

正如已经提到的,将代码分成较小的部分应该可以解决此问题。但是,由于更新到Xcode 12,只要代码中出现任何错误(例如错误的变量名),就似乎会抛出此错误。

查看您的代码,看不到任何错误。确保SettingsView也没有错误。