gpt4 book ai didi

ios - 无法在此文件中预览 - [应用程序名称].app 可能在 Xcode 11 Beta 5 上崩溃

转载 作者:行者123 更新时间:2023-12-03 19:04:56 25 4
gpt4 key购买 nike

如果我添加 EnviromentObject 属性包装器,Xcode 预览将不起作用。每次我添加一个 Canvas 时, Canvas 都不会构建,并且我会收到此错误:

Cannot preview in this file - [App Name].app may have crashed

如果我用 ObservedObject 替换 EnviromentObject 属性包装器并初始化它,一切正常。

这是我的代码:

class NetworkManager: ObservableObject {

}

struct ContentView : View {
@EnvironmentObject var networkManager: NetworkManager

var body: some View {
Text("Canvas not working")
}
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(NetworkManager())
}
}
#endif

更新:

当我使用绑定(bind)时,它也不会加载预览:

struct ContentView : View {
@EnvironmentObject var networkManager: NetworkManager
@Binding var test123: String

var body: some View {
Text("Canvas not working")
}
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
@State static var test1 = ""
static var previews: some View {
ContentView(test123: $test1).environmentObject(NetworkManager())
}
}
#endif

最佳答案

正如@graycampbell建议的那样,您需要确保将EnvironmentObject提供给SceneDelegate中的ContentView。虽然许多预览/ Canvas 机制都在黑匣子中,但 Xcode 的 UI 会建议调用新预览或刷新现有预览,甚至对于常规预览也可以构建(或更新其相关部分)应用程序的变体,如下所示反对“实时预览”。如果 SceneDelegate 设置不正确,此过程可能会失败。

对于您的 @Binding 问题,Binding.constant(_:) 应该有所帮助。根据 SwiftUI Documentation .constant 执行以下操作:

Creates a binding with an immutable value.

这就是您想要的预览内容,而不是示例代码显示的 @State。您可以在 this Apple tutorial 的第 3 节中看到使用 .constant 的示例。 .

所以代替这个:

#if DEBUG
struct ContentView_Previews: PreviewProvider {
@State static var test1 = "Some Preview String"
static var previews: some View {
ContentView(test123: $test1)
.environmentObject(NetworkManager())
}
}
#endif

您可以执行以下操作:

#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView(test123: .constant("Some Preview String"))
.environmentObject(NetworkManager())
}
}
#endif

通过此更改,您的代码预览非常适合我。请记住,您再次需要在 SceneDelegate 或使用此特定 ContentView 的任何其他位置中为此 Binding 提供一个值。否则,您将遇到与使用 EnvironmentObject 时遇到的问题类似的问题,只是幸运的是,编译器错误突出显示了这一特定的遗漏。

关于ios - 无法在此文件中预览 - [应用程序名称].app 可能在 Xcode 11 Beta 5 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57340586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com