Swift 运行 Xcode 11 使用 SwiftUI 时的编译器问题
Swift compiler issue when running Xcode 11 using SwiftUI
我正在尝试获取我的 SwiftUI
演示 运行,但我遇到了奇怪的编译器问题:
'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"))
}
}
}
}
目前,Swift 编译器生成的错误消息可能与实际问题所在的位置有一定距离。我们被鼓励就此类问题提交雷达。
在这种情况下,我可以看到您在创建第一个 Text()
时缺少 verbatim:
参数名称:
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)
}
}
}
...但是我无法通过删除它来重现您看到的编译器错误。因此,我建议您仔细比较已完成的项目文件,您可以从教程页面下载这些文件。
编辑:看起来其他人也有同样的问题 - 您可以在这里找到答案:(查看 Landmark 上的 isFavourite
属性)。
嗯...这与 isFavorite
属性 它在 Landmark 文件中丢失有关。 (少了♂️)
所以我要填补一个关于这个错误的编译器消息的错误。这绝对是一个错误。雷达编号FB6118410
如果你想修复它,你需要做两件事:
1
- 将此添加到
Landmark
结构 var isFavorite: Bool
- 您需要编辑
landmarkData.json
并添加此键和值 "isFavorite": true
否则它会崩溃。
我正在尝试获取我的 SwiftUI
演示 运行,但我遇到了奇怪的编译器问题:
'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"))
}
}
}
}
目前,Swift 编译器生成的错误消息可能与实际问题所在的位置有一定距离。我们被鼓励就此类问题提交雷达。
在这种情况下,我可以看到您在创建第一个 Text()
时缺少 verbatim:
参数名称:
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)
}
}
}
...但是我无法通过删除它来重现您看到的编译器错误。因此,我建议您仔细比较已完成的项目文件,您可以从教程页面下载这些文件。
编辑:看起来其他人也有同样的问题 - 您可以在这里找到答案:isFavourite
属性)。
嗯...这与 isFavorite
属性 它在 Landmark 文件中丢失有关。 (少了♂️)
所以我要填补一个关于这个错误的编译器消息的错误。这绝对是一个错误。雷达编号FB6118410
如果你想修复它,你需要做两件事: 1
- 将此添加到
Landmark
结构var isFavorite: Bool
- 您需要编辑
landmarkData.json
并添加此键和值"isFavorite": true
否则它会崩溃。