gpt4 book ai didi

swift - 为什么我在 Xcode 11 Beta 5 中使用 ForEach 时会出错?

转载 作者:行者123 更新时间:2023-12-05 08:22:49 25 4
gpt4 key购买 nike

错误信息:

Generic parameter 'ID' could not be inferred

ForEach(0...self.workoutsViewModel.workoutRoutine[self.workoutIndex].routine[0].exercises.count - 1) { x in

Text("\\(x)")

}

最佳答案

作为 ForEach 的第一个参数传递的集合中的元素必须符合 Identifiable,或者您必须使用不同的初始化程序来指定 KeyPath 元素上的 id。例如,以下代码无法编译:

struct MyModel {
let name: String
}

struct ContentView: View {
let models: [MyModel]

var body: some View {
ForEach(models) { model in
Text(model.name)
}
}
}

models 数组不满足ForEach 初始化器的要求,即它的元素不符合Identifiable。我可以通过以下两种方式之一解决此问题:

1.) 扩展 MyModel 以符合 Identifiable:

extension MyModel: Identifiable {
// assuming `name` is unique, it can be used as our identifier
var id: String { name }
}

2.) 在 ForEach 上使用方便的初始值设定项,它允许您为标识符指定一个 KeyPath:

var body: some View {
ForEach(models, id: \.name) { model in
Text(model.name)
}
}

关于swift - 为什么我在 Xcode 11 Beta 5 中使用 ForEach 时会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com