使用SwiftUI运行Xcode 11时的Swift编译器问题

Bil*_*fas 1 swift swiftui

我试图让我的SwiftUI演示程序运行,但出现奇怪的编译器问题:

“颜色”不能转换为“颜色?”

无法推断复杂的闭包返回类型;添加显式类型以消除歧义

struct LandmarkRow: View {
  var landmark: Landmark

  var body: some View {
    HStack {
      landmark.image(forSize: 50)
      Text(landmark.name)
      Spacer()

      if landmark.isFavorite {
        Image(systemName: "star.fill")
           .imageScale(.medium)
           .foregroundColor(.yellow) // Here 'Color' is not convertible to 'Color?'
      }
    }
  }
}

struct LandmarkList: View {
  @State var showFavoritesOnly = true

  var body: some View {
      NavigationView {
          List {
              Toggle(isOn: $showFavoritesOnly) {
                  Text("Favorites only")
              }

              ForEach(landmarkData) { landmark in // Here Unable to infer complex closure return type; add explicit type to disambiguate
                  if !self.showFavoritesOnly || landmark.isFavorite {
                      NavigationButton(destination: LandmarkDetail(landmark: landmark)) {
                          LandmarkRow(landmark: landmark)
                      }
                  }
              }
              .navigationBarTitle(Text("Landmarks"))
          }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

Bil*_*fas 5

好吧……这与isFavorite地标文件中缺少的属性有关。(它丢失了???)

因此,我将填补有关此不良编译器消息的错误。这绝对是一个错误。雷达号FB6118410

如果要修复它,您需要做两件事:1

  1. 将此添加到Landmark结构var isFavorite: Bool
  2. 您需要编辑landmarkData.json并添加此键和值, "isFavorite": true否则它将崩溃。