我正在使用https://developer.apple.com/tutorials/swiftui/tutorials for SwiftUI,并且已经下载了 macOS Catalina和Xcode 11.0 beta。
尝试以下操作后,画布崩溃且无法恢复:
代码只是声明了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
错误。
这是看起来像的图像:
请注意,直到某一点为止一切正常。
在此先感谢您的帮助!
答案 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"
}
还要确保已包含所有捆绑的图像(仅供参考)。在苹果的前两本教程之间,我错过了几本。似乎在跟进而不是下载资源方面存在不一致之处。
答案 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
}