SwiftUI编译报错:无法在合理时间内检查表达式,求修复方案
你遇到的
The compiler is unable to type-check this expression in reasonable time
错误,本质是代码里存在让编译器难以快速解析的歧义或错误,结合你的代码来看,有两个核心问题:
问题1:类型不匹配 #
password
是
String
类型,但你直接和整数
123
做比较,这种跨类型的对比会让编译器在类型推导时卡住,是触发超时的主要原因。
问题2:在视图构建闭包里执行副作用 #
SwiftUI的
body
是用来描述视图结构的,不能在这里直接写
if username == "admin" {v1.toggle()}
这种修改状态的逻辑——这种写法既不符合SwiftUI的状态管理规则,也会干扰编译器的类型检查流程。
修正后的完整代码 #
import SwiftUI
struct ContentView: View {
@State private var username: String = ""
@State private var password: String = ""
@State private var isCredentialsValid = false
var body: some View {
VStack {
TextField("User name", text: $username)
.autocapitalization(.none)
.disableAutocorrection(true)
.border(Color(UIColor.separator))
SecureField("Password", text: $password)
.border(Color(UIColor.separator))
// 根据验证结果显示内容
Text(isCredentialsValid ? "Krabben Bürger Geheimformel... H=ode2X" : "")
// 监听用户名和密码的变化,实时验证
.onChange(of: [username, password]) { newValue in
let (newUser, newPwd) = (newValue[0], newValue[1])
isCredentialsValid = newUser == "admin" && newPwd == "123"
struct ContentView_Previews: PreviewProvider {