我正在通过以下SwiftUI教程进行工作: https://developer.apple.com/tutorials/swiftui/handling-user-input
在“在视图中采用模型对象”部分的第3步中,我在第16行的Toggle语句中收到此错误:“无法推断出通用参数'Label'。”
我的代码与本教程中提供的代码相同:
import SwiftUI
struct Landmarklist: View {
@EnvironmentObject var userData: UserData
var body: some View {
NavigationView {
List {
Toggle(isOn: $userData.showFavoritesOnly) {
Text("Favorites Only")
}
ForEach(userData.landmarkData) { landmark in
if !self.userData.showFavoritesOnly || landmark.isFavorite {
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
}
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
struct Landmarklist_Previews: PreviewProvider {
static var previews: some View {
ForEach(["iPhone SE","iPhone XS Max"],id: \.self) { deviceName in
Landmarklist()
.previewDevice(PreviewDevice(rawValue: deviceName))
.previewDisplayName(deviceName)
}
}
}
当我查看“ Complete”文件夹中提供的代码时,我看到了几乎相同的内容,只是将userData变量设为私有-我将其添加到“ StartingPoint”版本中,尽管我无法想象为什么会有所作为,当然它仍然会给出相同的错误,并且不会生成。我可以构建和运行完整版,因此很明显,要求通用参数的消息是错误的,它必须与其他项目有关,例如在设置中如何配置项目。
我记得今年夏天早些时候在本教程的不同部分中遇到了类似问题,并发现了一个帖子,其中有人解释了为什么代码可以在一个项目中而不是在另一个项目中工作,但是我现在找不到该帖子。
有人知道这个问题吗?在这样的视图中可以在切换控件中引用可观察对象之前,还需要了解有关如何配置项目的其他信息吗?