如何修复Xcode 11.0 beta版Canvas崩溃?

时间:2019-06-05 11:48:34

标签: ios swift swiftui xcode11

我正在使用https://developer.apple.com/tutorials/swiftui/tutorials for SwiftUI,并且已经下载了 macOS Catalina和Xcode 11.0 beta。

尝试以下操作后,画布崩溃且无法恢复:

  • 我试图彻底清理项目-失败
  • 我尝试重新启动Xcode-失败
  • 我尝试过重启-失败

代码只是声明了UI,没有什么花哨的东西。

import SwiftUI

struct LandmarkDetail : View {
    var landmark: Landmark

    var body: some View {
        VStack {
            MapView(coordinate: landmark.locationCoordinate)
                .edgesIgnoringSafeArea(.top)
                .frame(height: 300)

            CircleImage(image: landmark.image(forSize: 250))
                .offset(y: -130.0)
                .padding(.bottom, -130.0)

            VStack(alignment: .leading) {
                Text(landmark.name)
                    .font(.title)
                    .multilineTextAlignment(.center)


                HStack {
                    Text(landmark.park)
                        .font(.subheadline)
                    Spacer()
                    Text(landmark.state)
                        .font(.subheadline)
                }
            }
            .padding()

            Spacer()
        }
        .navigationBarTitle(Text(landmark.name), displayMode: .inline)
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        LandmarkDetail(landmark: landmarkData[0])
    }
}
#endif

我希望画布显示UI,但是我不断收到Cannot preview in this file --- MyApp.app may have crashed错误。

这是看起来像的图像:

Canvas crash

请注意,直到某一点为止一切正常。

在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

我遇到了同样的错误;我通过从教程中下载更新的资源进行修复。基本上,我认为您已将isFavorite添加到Landmark模型中,但是在JSON中缺少该字段,因此解码失败。下载,并从教程资源中替换新的JSON。

如果问题不是isFavorite,应该是另外一个资源丢失了,那么每次您从教程上开始新课程时,只需确保下载新的Landmark模型和相关资源即可。

这是Apple的错,因为他们没有提到您需要更新JSON文件以匹配Landmark模型。

编辑

如果仍然有问题,只需在此处添加json和Landmark模型,以便我们对其进行了解

答案 1 :(得分:0)

以上是正确的,但是在更新JSON以匹配Apple的资源后,我仍然崩溃。在此JSON中,它们也是新的类别“山”,您将必须更新Landmark.swift以包括以下情况。

enum Category: String, CaseIterable, Codable, Hashable {
        case featured = "Featured"
        case lakes = "Lakes"
        case rivers = "Rivers"
        case mountains = "Mountains"
}

还要确保已包含所有捆绑的图像(仅供参考)。在苹果的前两本教程之间,我错过了几本。似乎在跟进而不是下载资源方面存在不一致之处。

enter image description here

答案 2 :(得分:0)

第一次崩溃与Landmark.swift中添加的枚举类别案例有关:

object_detection

随后的第二次崩溃是由于资源名称更改: 如果您不想更新资源,只需确保将yukon_charleyrivers.jpg重命名为'charleyrivers.jps',或者只是确保它与Charley Rivers词典的.json“ imageName”值匹配。

enum Category: String, CaseIterable, Codable, Hashable {
    case featured = "Featured"
    case lakes = "Lakes"
    case rivers = "Rivers"
    case mountains = "Mountains" . // <- added
}