2

I'm trying to get my SwiftUI Demo running but I get weird compiler issues:

'Color' is not convertible to 'Color?'

Unable to infer complex closure return type; add explicit type to disambiguate

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"))
          }
      }
   }
}
4

2 回答 2

6

嗯...这与isFavorite它在地标文件中缺少的属性有关。(不见了‍♂️)

所以我要填写一个关于这个糟糕的编译器消息的错误。这绝对是一个错误。雷达编号FB6118410

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

  1. 将此添加到Landmark结构中var isFavorite: Bool
  2. 您需要编辑landmarkData.json并添加此键和值, "isFavorite": true否则它将崩溃。
于 2019-06-05T09:49:51.097 回答
0

目前,Swift 编译器正在生成错误消息,这些错误消息可能与实际问题所在的位置有一定距离。我们被鼓励就此类问题提交雷达报告。

verbatim:在这种情况下,我可以看到您在创建第一个时缺少参数名称Text()

    var body: some View {
        HStack {
            landmark.image(forSize: 50)
            Text(verbatim: landmark.name) // don't forget the "verbatim" parameter name
            Spacer()

            if landmark.isFavorite {
                Image(systemName: "star.fill")
                    .imageScale(.medium)
                    .foregroundColor(.yellow)
            }
        }
    }

...但是我无法通过删除它来重现您看到的编译器错误。因此,我建议您仔细对比您可以从教程页面下载的已完成项目文件。

编辑:看起来其他人也有同样的问题——你可以在这里找到答案:https ://stackoverflow.com/a/56451329/233602 (查看isFavouriteLandmark上的属性)。

于 2019-06-05T06:54:14.237 回答