Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译器无法在合理的时间内在SwiftUI中对此表达式进行类型检查

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

Stack Overflow用户
提问于 2019-10-17 13:42:57
回答 1查看 1.4K关注 0票数 3

我正在尝试用SwiftUI构建一个我认为很简单的表单,但在从主体返回的视图(在本例中是Form,但我也尝试过VStack)上收到错误消息“the compiler is unable to type check this expression;try up up the expression to distinct sub sections”。如果我开始删除一些子视图,它似乎解决了,即使我的视图都没有直接返回10个子视图,我认为这是单个视图的限制(除了在ForEach中返回的视图)。

代码语言:javascript
运行
AI代码解释
复制
import SwiftUI

struct CreateDispatchView: View {
    @State private var customerId: Int = 0
    @State private var name: String = ""
    @State private var phone: String = ""
    @State private var description: String = ""
    @State private var priorityId: Int = 0
    @State private var callTypeId: Int = 0
    @State private var bay: String = ""
    @State private var poTicket: String = ""
    @State private var outOfChemicals: Bool = false
    @State private var isReturnCall: Bool = false

    var body: some View {
        Form { // <-- Error is shown here
            Section {
                Picker("Customer", selection: $customerId) {
                    ForEach(0 ..< 10) {
                        Text("Customer \($0)")
                    }
                }
                TextField("Name", text: $name)
                TextField("Phone", text: $phone)
                TextField("Description", text: $description)
                TextField("Bay", text: $bay)
                TextField("PO ticket", text: $poTicket)
            }

            Section {

                Picker("Priority", selection: $priorityId) {
                    ForEach(0 ..< 2) {
                        Text("Priority \($0)")
                    }
                }
                Picker("Call type", selection: $callTypeId) {
                    ForEach(0 ..< 3) {
                        Text("Call type \($0)")
                    }
                }
            }

            Section {

                Toggle(isOn: $outOfChemicals) {
                    Text("Out of chemicals")
                }
                Toggle(isOn: $isReturnCall) {
                    Text("Is return call")
                }
            }
        }
    }
}

struct CreateDispatchView_Previews: PreviewProvider {
    static var previews: some View {
        CreateDispatchView()
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-17 14:10:17

大型嵌套ViewBuilder表达式的处理是当前swift编译器中的一个弱点。不过,一般来说,它建议“尝试将表达式拆分成不同的子部分”是一个很好的建议:将这些整体ViewBuilder表达式重构为单独的动态变量是提高性能的好方法(此外,它还有助于隔离实际错误)。

下面是一个如何重构代码以成功编译的示例:

代码语言:javascript
运行
AI代码解释
复制
struct CreateDispatchView: View {
    @State private var customerId: Int = 0
    @State private var name: String = ""
    @State private var phone: String = ""
    @State private var description: String = ""
    @State private var priorityId: Int = 0
    @State private var callTypeId: Int = 0
    @State private var bay: String = ""
    @State private var poTicket: String = ""
    @State private var outOfChemicals: Bool = false
    @State private var isReturnCall: Bool = false

    var body: some View {
        Form {
            customerSection
            prioritySection
            infoSection
        }
    }

    private var customerSection: some View {
        Section {
            Picker("Customer", selection: $customerId) {
                ForEach(0 ..< 10) {
                    Text("Customer \($0)")
                }
            }
            TextField("Name", text: $name)
            TextField("Phone", text: $phone)
            TextField("Description", text: $description)
            TextField("Bay", text: $bay)
            TextField("PO ticket", text: $poTicket)
        }
    }

    private var prioritySection: some View {
        Section {
            Picker("Priority", selection: $priorityId) {
                ForEach(0 ..< 2) {
                    Text("Priority \($0)")
                }
            }
            Picker("Call type", selection: $callTypeId) {
                ForEach(0 ..< 3) {
                    Text("Call type \($0)")
                }
            }
        }
    }

    private var infoSection: some View {
        Section {
            Toggle(isOn: $outOfChemicals) {
                Text("Out of chemicals")
            }
            Toggle(isOn: $isReturnCall) {
                Text("Is return call")
            }
        }
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58434117

复制
相关文章
SpringBoot启动器
pom.xml文件 1.父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> </parent> 他的父项目 <parent> <groupId>org.springframework.boot</groupId> <art
用户1112962
2018/07/03
1K0
springboot启动器
这篇文章中,我们将介绍Spring Boot Starters,并将讨论Spring Boot Starters的优点和优势。
叔牙
2020/11/19
1.7K0
springboot启动器
java启动器_JAVA基础:Java 启动器如何查找类
Java 启动器 java 将初始化 Java 虚拟机。虚拟机随即按以下顺序搜索和加载类:
全栈程序员站长
2022/09/08
1.2K0
为什么Vue(默认情况下)比React性能更好
本文不是要辩论 Vue 好还是 React 好,而是要看看这两个框架在低层次上是如何选择的。
前端小智@大迁世界
2022/09/28
6620
为什么Vue(默认情况下)比React性能更好
SpringBoot核心【starter启动器】
  SpringBoot为我们提供了简化企业级开发绝大多数场景的starter pom,只要使用了应用场景所需要的start pom,相关的技术配置将会消除,就可以得到SpringBoot为我们提供的自动配置的Bean。
用户4919348
2019/05/15
1.8K0
散文说python半篇——景观三元论与盖茨比的对话「建议收藏」
景观三元论问:盖茨比,你为何不用C++写代码?非要用ruby或者python这样的执行非常慢的语言呢?
全栈程序员站长
2022/07/07
2440
启动器—Alpha框架解析
启动优化,其实就是优化从点击icon到主页面展示这个过程的速度,让主界面尽量快的展现在用户面前。所以我们要做的就是找到那些耗时操作,并将其优化。
码上积木
2021/01/11
1.8K0
启动器—Alpha框架解析
springboot之场景启动器
首先看spring-boot-starter-parent,spring-boot-start就是场景启动器,这是所有项目的父项目,我们ctrl+鼠标左键点进去:
西西嘛呦
2020/08/26
5450
Spring Boot Runner启动器
Runner启动器 如果你想在Spring Boot启动的时候运行一些特定的代码,你可以实现接口 ApplicationRunner或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法。 CommandLineRunner:启动获取命令行参数。 public interface CommandLineRunner { /** * Callback used to run the bean. * @param args incomin
Java技术栈
2018/03/30
8910
Spring Boot Runner启动器
Spring Boot Starters启动器
Starters是什么? Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器依赖就能使用了。 Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。 Starters命名 Spring Boot官方的启动器都是以spring-boot-start
Java技术栈
2018/03/30
8890
Spring Boot Starters启动器
springboot自定义启动器
Spring Boot为大多数开源项目提供了许多启动器,很可能你想为你的项目或组织开发自己的自动配置,我们也可以用Spring Boot创建自定义启动器。
叔牙
2020/11/19
9860
springboot自定义启动器
如何制作U盘启动器?
下面,在Windows 操作系统上,以制作一个 Centos 版本的 U盘启动器为例, 进行说明。
云雀叫了一整天
2019/10/07
2.5K0
比尔•盖茨新冠检测:呈阳性
比尔•盖茨周二表示,他的新冠病毒检测结果呈阳性。 这位微软联合创始人在推特上宣布了病情,声称自己“出现了轻微症状,现正听从医疗专家们的建议进行隔离,直到恢复健康为止。” 他在另一条推文中补充道:“幸好我已种了疫苗,打了加强针,幸好获得了检测和优质的医疗服务。” 他特别指出,自己与前妻Melinda French Gates共同设立的盖茨基金会将于周二举行线下面对面会议,这是“两年来头一次,我很幸运能通过Teams见到各位,感谢他们所做的努力工作”,他是指微软的视频会议服务。 盖茨说:“我们将继续与合作伙伴
云头条
2022/05/12
1930
比尔•盖茨新冠检测:呈阳性
python 跨平台python脚本启动器
------------------------------------调用方式-------------------------------- import Launcher Launcher.launchBookExamples(['PyDemos.pyw'], trace=False) ----------------------------------Launcher.py--------------------------------
用户5760343
2022/05/13
6610
SpringBoot - FileStorage Starter场景启动器
Spring Boot - 手把手教小师妹自定义Spring Boot Starter
小小工匠
2022/04/21
1.3K0
SpringBoot - FileStorage Starter场景启动器
如何制作U盘启动器? Linux -> Windows
下面,在 LInux 操作系统上,以制作一个 Windows 版本的 U盘启动器为例, 进行说明。
云雀叫了一整天
2020/02/18
7.5K0
盖茨基金:成也数据,败也数据
比尔·盖茨是美国企业成功故事的典型代表。这个绝顶聪明的孩子,大学中途退学,创办自己的软件公司。而且他们公司开发的软件,最终用在了世界90% 的电脑上,比尔也因此赚到了数十亿美元的财富。后来,他退出江湖,将大部分财富捐献给慈善事业。比尔以自己和妻子的名义成立了“比尔&梅琳达·盖茨基金会”(Bill& Melinda Gates Foundation)。而且我们很高兴地看到该基金会在许多领域进行了大胆投资。它涉足的领域包括在发展中国家进行疟疾预防,在美国进行中学改革,以及对艾滋病(HIV/AIDS)的研究。盖
大数据文摘
2018/05/23
6040
Linux应急响应(四):盖茨木马
Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装。木马得名于其在变量函数的命名中,大量使用Gates这个单词。分析和清除盖茨木马的过程,可以发现有很多值得去学习和借鉴的地方。
Bypass
2019/07/08
2K0
Linux应急响应(四):盖茨木马
点击加载更多

相似问题

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

355

SwiftUI,并且编译器无法在合理的时间内对此表达式进行类型检查

113

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

114

缩短swiftUI代码:编译器无法在合理的时间内对此表达式进行类型检查

30

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

117
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档