提问人:Martin01 提问时间:10/14/2023 更新时间:10/18/2023 访问量:106
Swift 错误:无法查找具有@State变量的符号
Swift error: Couldn't lookup symbols with @State variable
问:
我目前正在使用 Xcode 版本 15.0,并希望在移植器中实现箭头。在各种站点的 Internet 上使用 stand 变量时,最近出现了一个以前未知的问题,即从 Xcode 版本 15.0 开始,无法再读取以下变量:
import SwiftUI
import RealmSwift
struct commands: Commands{
@ObservedResults(Book.self) var allBooks
@State private var isShowing = false
@State private var test = "test"
private var test2 = "tessssst"
var fileManager = FileManagerSingelton.shared
var body: some Commands {
CommandMenu("import"){
Button("Import File"){
isShowing.toggle()
} //$isShowing is probably the error and becomes nil
.fileImporter(isPresented: $isShowing, allowedContentTypes: [.item]) {result in
switch result {
case .success(let url):
pass
case .failure(let error):
print(error)
return
}
}
}
}
}
为了调试,我添加了两个变量 Test 和 Test2
(lldb) po test
error: Couldn't lookup symbols:
SpeedReader.commands.test.getter : Swift.String
(lldb) p test
error: Couldn't lookup symbols:
SpeedReader.commands.test.getter : Swift.String
(lldb) po test2
"tessssst"
(lldb) p test2
(String) "tessssst"
不幸的是,我还没有在 Steckoverflow 上真正发现类似的问题。
答:
0赞
Jim Ingham
10/17/2023
#1
具体错误是 lldb 找不到变量的 getter。据推测,宏导致 swift 在变量周围生成 getter 和 setter 来完成它的工作,但编译器选择“内联”使用 getter,而不是发出可以在调试器中调用的常规方法。@State
@State
您可以使用它来检查该变量。 对值进行静态检查,而不是像调试器那样调用代码,因此有时可以看到此类问题。v
v
p
但是,如果你有时间,也值得向 swift bug 报告者提交一个 bug:
https://github.com/apple/swift/issues/
在 swift 应该使 getter 在调试器中可调用。-ONone
评论
po _test
p _test
pass
po _test.wrappedValue
_isShowing.projectedValue
pass