在MacOS上,我有一个非常简单的ContentView
:
struct ContentView: View {
@ObservedObject var environment: Environment
var body: some View {
if let glyph = environment.glyph {
print ("Content View (glyph)")
return AnyView {
GlyphView(glyph: glyph)
}
} else {
return AnyView {
Text("no glyph")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var environment = Environment()
static var previews: some View {
ContentView(environment: environment)
}
}
当我运行应用程序时,控制台给出:
2020-10-14 21:50:42.065365+0200 ShapeSearch[94679:5992139] Metal API Validation Enabled
2020-10-14 21:50:42.093298+0200 ShapeSearch[94679:5992191] flock failed to lock maps file: errno = 35
2020-10-14 21:50:42.093688+0200 ShapeSearch[94679:5992191] flock failed to lock maps file: errno = 35
Content View Glyph "k" - 6 contours
并且ContentView
保持为空,没有GlyphView
,没有Text
。
但当我调试GlyphView
时,我可以在画布上看到非常好的渲染字形:
struct GlyphView_Previews: PreviewProvider {
static var glyph = Environment().glyph!
static var previews: some View {
GlyphView(glyph: glyph)
}
}
CCD_ 6在两种情况下都取自同一来源。我确信。
编辑:
这种工作方式:
struct ContentView: View {
@ObservedObject var environment: Environment
var body: some View {
GlyphView(glyph: environment.glyph!)
}
}
错误可能在哪里?
目前尚不清楚您使用的是哪个SwiftUI版本,但以下内容在任何情况下都应该适用于
var body: some View {
Group {
if nil != environment.glyph {
GlyphView(glyph: environment.glyph!)
} else {
Text("no glyph")
}
}
}